public final class org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode extends org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint implements org.graalvm.compiler.nodes.spi.Lowerable, org.graalvm.compiler.nodes.memory.MemoryCheckpoint$Single
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode
  super_class: org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint
{
  public static final org.graalvm.compiler.graph.NodeClass<org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode> TYPE;
    descriptor: Lorg/graalvm/compiler/graph/NodeClass;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Lorg/graalvm/compiler/graph/NodeClass<Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;>;

  private final org.graalvm.compiler.replacements.arraycopy.ArrayCopyForeignCalls foreignCalls;
    descriptor: Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyForeignCalls;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.JavaKind wordKind;
    descriptor: Ljdk/vm/ci/meta/JavaKind;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  org.graalvm.compiler.nodes.ValueNode src;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  org.graalvm.compiler.nodes.ValueNode srcPos;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  org.graalvm.compiler.nodes.ValueNode dest;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  org.graalvm.compiler.nodes.ValueNode destPos;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  org.graalvm.compiler.nodes.ValueNode length;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  org.graalvm.compiler.nodes.ValueNode destElemKlass;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  org.graalvm.compiler.nodes.ValueNode superCheckOffset;
    descriptor: Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$Input()

  protected final boolean uninit;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 62
            ldc Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;
            invokestatic org.graalvm.compiler.graph.NodeClass.create:(Ljava/lang/Class;)Lorg/graalvm/compiler/graph/NodeClass;
            putstatic org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(org.graalvm.compiler.replacements.arraycopy.ArrayCopyForeignCalls, org.graalvm.compiler.word.WordTypes, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode, boolean);
    descriptor: (Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyForeignCalls;Lorg/graalvm/compiler/word/WordTypes;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=11, args_size=11
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
        start local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyForeignCalls foreignCalls
        start local 2 // org.graalvm.compiler.word.WordTypes wordTypes
        start local 3 // org.graalvm.compiler.nodes.ValueNode src
        start local 4 // org.graalvm.compiler.nodes.ValueNode srcPos
        start local 5 // org.graalvm.compiler.nodes.ValueNode dest
        start local 6 // org.graalvm.compiler.nodes.ValueNode destPos
        start local 7 // org.graalvm.compiler.nodes.ValueNode length
        start local 8 // org.graalvm.compiler.nodes.ValueNode superCheckOffset
        start local 9 // org.graalvm.compiler.nodes.ValueNode destElemKlass
        start local 10 // boolean uninit
         0: .line 81
            aload 0 /* this */
            getstatic org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.TYPE:Lorg/graalvm/compiler/graph/NodeClass;
            getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.forKind:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokespecial org.graalvm.compiler.nodes.memory.AbstractMemoryCheckpoint.<init>:(Lorg/graalvm/compiler/graph/NodeClass;Lorg/graalvm/compiler/core/common/type/Stamp;)V
         1: .line 82
            aload 0 /* this */
            aload 1 /* foreignCalls */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.foreignCalls:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyForeignCalls;
         2: .line 83
            aload 0 /* this */
            aload 2 /* wordTypes */
            invokevirtual org.graalvm.compiler.word.WordTypes.getWordKind:()Ljdk/vm/ci/meta/JavaKind;
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.wordKind:Ljdk/vm/ci/meta/JavaKind;
         3: .line 84
            aload 0 /* this */
            aload 3 /* src */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.src:Lorg/graalvm/compiler/nodes/ValueNode;
         4: .line 85
            aload 0 /* this */
            aload 4 /* srcPos */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.srcPos:Lorg/graalvm/compiler/nodes/ValueNode;
         5: .line 86
            aload 0 /* this */
            aload 5 /* dest */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.dest:Lorg/graalvm/compiler/nodes/ValueNode;
         6: .line 87
            aload 0 /* this */
            aload 6 /* destPos */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.destPos:Lorg/graalvm/compiler/nodes/ValueNode;
         7: .line 88
            aload 0 /* this */
            aload 7 /* length */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.length:Lorg/graalvm/compiler/nodes/ValueNode;
         8: .line 89
            aload 0 /* this */
            aload 8 /* superCheckOffset */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.superCheckOffset:Lorg/graalvm/compiler/nodes/ValueNode;
         9: .line 90
            aload 0 /* this */
            aload 9 /* destElemKlass */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.destElemKlass:Lorg/graalvm/compiler/nodes/ValueNode;
        10: .line 91
            aload 0 /* this */
            iload 10 /* uninit */
            putfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.uninit:Z
        11: .line 92
            return
        end local 10 // boolean uninit
        end local 9 // org.graalvm.compiler.nodes.ValueNode destElemKlass
        end local 8 // org.graalvm.compiler.nodes.ValueNode superCheckOffset
        end local 7 // org.graalvm.compiler.nodes.ValueNode length
        end local 6 // org.graalvm.compiler.nodes.ValueNode destPos
        end local 5 // org.graalvm.compiler.nodes.ValueNode dest
        end local 4 // org.graalvm.compiler.nodes.ValueNode srcPos
        end local 3 // org.graalvm.compiler.nodes.ValueNode src
        end local 2 // org.graalvm.compiler.word.WordTypes wordTypes
        end local 1 // org.graalvm.compiler.replacements.arraycopy.ArrayCopyForeignCalls foreignCalls
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;
            0   12     1      foreignCalls  Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyForeignCalls;
            0   12     2         wordTypes  Lorg/graalvm/compiler/word/WordTypes;
            0   12     3               src  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12     4            srcPos  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12     5              dest  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12     6           destPos  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12     7            length  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12     8  superCheckOffset  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12     9     destElemKlass  Lorg/graalvm/compiler/nodes/ValueNode;
            0   12    10            uninit  Z
    RuntimeVisibleParameterAnnotations: 
      0:
        org.graalvm.compiler.graph.Node$InjectedNodeParameter()
      1:
        org.graalvm.compiler.graph.Node$InjectedNodeParameter()
      2:
      3:
      4:
      5:
      6:
      7:
      8:
      9:
    MethodParameters:
                  Name  Flags
      foreignCalls      
      wordTypes         
      src               
      srcPos            
      dest              
      destPos           
      length            
      superCheckOffset  
      destElemKlass     
      uninit            

  public org.graalvm.compiler.nodes.ValueNode getSource();
    descriptor: ()Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 95
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.src:Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  public org.graalvm.compiler.nodes.ValueNode getSourcePosition();
    descriptor: ()Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 99
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.srcPos:Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  public org.graalvm.compiler.nodes.ValueNode getDestination();
    descriptor: ()Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 103
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.dest:Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  public org.graalvm.compiler.nodes.ValueNode getDestinationPosition();
    descriptor: ()Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 107
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.destPos:Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  public org.graalvm.compiler.nodes.ValueNode getLength();
    descriptor: ()Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 111
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.length:Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  public boolean isUninit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 115
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.uninit:Z
            ireturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  private org.graalvm.compiler.nodes.ValueNode computeBase(org.graalvm.compiler.nodes.spi.LoweringTool, org.graalvm.compiler.nodes.ValueNode, org.graalvm.compiler.nodes.ValueNode);
    descriptor: (Lorg/graalvm/compiler/nodes/spi/LoweringTool;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=9, args_size=4
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
        start local 1 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        start local 2 // org.graalvm.compiler.nodes.ValueNode base
        start local 3 // org.graalvm.compiler.nodes.ValueNode pos
         0: .line 119
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            new org.graalvm.compiler.nodes.GetObjectAddressNode
            dup
            aload 2 /* base */
            invokespecial org.graalvm.compiler.nodes.GetObjectAddressNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.FixedWithNextNode
            astore 4 /* basePtr */
        start local 4 // org.graalvm.compiler.nodes.FixedWithNextNode basePtr
         1: .line 120
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            aload 0 /* this */
            aload 4 /* basePtr */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.addBeforeFixed:(Lorg/graalvm/compiler/nodes/FixedNode;Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
         2: .line 122
            aload 1 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.getArrayIndexScale:(Ljdk/vm/ci/meta/JavaKind;)I
            invokestatic jdk.vm.ci.code.CodeUtil.log2:(I)I
            istore 5 /* shift */
        start local 5 // int shift
         3: .line 123
            aload 3 /* pos */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.wordKind:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.forKind:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokestatic org.graalvm.compiler.nodes.calc.IntegerConvertNode.convert:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* extendedPos */
        start local 6 // org.graalvm.compiler.nodes.ValueNode extendedPos
         4: .line 124
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            new org.graalvm.compiler.nodes.calc.LeftShiftNode
            dup
            aload 6 /* extendedPos */
            iload 5 /* shift */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forInt:(ILorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
            invokespecial org.graalvm.compiler.nodes.calc.LeftShiftNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ValueNode
            astore 7 /* scaledIndex */
        start local 7 // org.graalvm.compiler.nodes.ValueNode scaledIndex
         5: .line 125
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
         6: .line 126
            new org.graalvm.compiler.nodes.calc.AddNode
            dup
            aload 7 /* scaledIndex */
         7: .line 127
            aload 7 /* scaledIndex */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokestatic org.graalvm.compiler.core.common.type.PrimitiveStamp.getBits:(Lorg/graalvm/compiler/core/common/type/Stamp;)I
            aload 1 /* tool */
            invokeinterface org.graalvm.compiler.nodes.spi.LoweringTool.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.getArrayBaseOffset:(Ljdk/vm/ci/meta/JavaKind;)I
            i2l
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokestatic org.graalvm.compiler.nodes.ConstantNode.forIntegerBits:(IJLorg/graalvm/compiler/nodes/StructuredGraph;)Lorg/graalvm/compiler/nodes/ConstantNode;
         8: .line 126
            invokespecial org.graalvm.compiler.nodes.calc.AddNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
         9: .line 125
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ValueNode
            astore 8 /* offset */
        start local 8 // org.graalvm.compiler.nodes.ValueNode offset
        10: .line 128
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            new org.graalvm.compiler.nodes.memory.address.OffsetAddressNode
            dup
            aload 4 /* basePtr */
            aload 8 /* offset */
            invokespecial org.graalvm.compiler.nodes.memory.address.OffsetAddressNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.unique:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ValueNode
            areturn
        end local 8 // org.graalvm.compiler.nodes.ValueNode offset
        end local 7 // org.graalvm.compiler.nodes.ValueNode scaledIndex
        end local 6 // org.graalvm.compiler.nodes.ValueNode extendedPos
        end local 5 // int shift
        end local 4 // org.graalvm.compiler.nodes.FixedWithNextNode basePtr
        end local 3 // org.graalvm.compiler.nodes.ValueNode pos
        end local 2 // org.graalvm.compiler.nodes.ValueNode base
        end local 1 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;
            0   11     1         tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            0   11     2         base  Lorg/graalvm/compiler/nodes/ValueNode;
            0   11     3          pos  Lorg/graalvm/compiler/nodes/ValueNode;
            1   11     4      basePtr  Lorg/graalvm/compiler/nodes/FixedWithNextNode;
            3   11     5        shift  I
            4   11     6  extendedPos  Lorg/graalvm/compiler/nodes/ValueNode;
            5   11     7  scaledIndex  Lorg/graalvm/compiler/nodes/ValueNode;
           10   11     8       offset  Lorg/graalvm/compiler/nodes/ValueNode;
    MethodParameters:
      Name  Flags
      tool  
      base  
      pos   

  public void lower(org.graalvm.compiler.nodes.spi.LoweringTool);
    descriptor: (Lorg/graalvm/compiler/nodes/spi/LoweringTool;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=8, args_size=2
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
        start local 1 // org.graalvm.compiler.nodes.spi.LoweringTool tool
         0: .line 133
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getGuardsStage:()Lorg/graalvm/compiler/nodes/StructuredGraph$GuardsStage;
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$GuardsStage.areFrameStatesAtDeopts:()Z
            ifeq 11
         1: .line 134
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.foreignCalls:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyForeignCalls;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.isUninit:()Z
            invokeinterface org.graalvm.compiler.replacements.arraycopy.ArrayCopyForeignCalls.lookupCheckcastArraycopyDescriptor:(Z)Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            astore 2 /* desc */
        start local 2 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor desc
         2: .line 135
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 3 /* graph */
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
         3: .line 136
            aload 0 /* this */
            aload 1 /* tool */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.getSource:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.getSourcePosition:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.computeBase:(Lorg/graalvm/compiler/nodes/spi/LoweringTool;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 4 /* srcAddr */
        start local 4 // org.graalvm.compiler.nodes.ValueNode srcAddr
         4: .line 137
            aload 0 /* this */
            aload 1 /* tool */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.getDestination:()Lorg/graalvm/compiler/nodes/ValueNode;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.getDestinationPosition:()Lorg/graalvm/compiler/nodes/ValueNode;
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.computeBase:(Lorg/graalvm/compiler/nodes/spi/LoweringTool;Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 5 /* destAddr */
        start local 5 // org.graalvm.compiler.nodes.ValueNode destAddr
         5: .line 138
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.getLength:()Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* len */
        start local 6 // org.graalvm.compiler.nodes.ValueNode len
         6: .line 139
            aload 6 /* len */
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokevirtual org.graalvm.compiler.nodes.ValueNode.stamp:(Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/core/common/type/Stamp;
            invokevirtual org.graalvm.compiler.core.common.type.Stamp.getStackKind:()Ljdk/vm/ci/meta/JavaKind;
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.wordKind:Ljdk/vm/ci/meta/JavaKind;
            if_acmpeq 8
         7: .line 140
            aload 6 /* len */
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.wordKind:Ljdk/vm/ci/meta/JavaKind;
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.forKind:(Ljdk/vm/ci/meta/JavaKind;)Lorg/graalvm/compiler/core/common/type/Stamp;
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.graph:()Lorg/graalvm/compiler/nodes/StructuredGraph;
            getstatic org.graalvm.compiler.nodes.NodeView.DEFAULT:Lorg/graalvm/compiler/nodes/NodeView;
            invokestatic org.graalvm.compiler.nodes.calc.IntegerConvertNode.convert:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/type/Stamp;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/NodeView;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 6 /* len */
         8: .line 142
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode org.graalvm.compiler.nodes.spi.LoweringTool org.graalvm.compiler.core.common.spi.ForeignCallDescriptor org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode org.graalvm.compiler.nodes.ValueNode
      StackMap stack:
            aload 3 /* graph */
            new org.graalvm.compiler.nodes.extended.ForeignCallNode
            dup
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.foreignCalls:Lorg/graalvm/compiler/replacements/arraycopy/ArrayCopyForeignCalls;
            aload 2 /* desc */
            iconst_5
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 4 /* srcAddr */
            aastore
            dup
            iconst_1
            aload 5 /* destAddr */
            aastore
            dup
            iconst_2
            aload 6 /* len */
            aastore
            dup
            iconst_3
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.superCheckOffset:Lorg/graalvm/compiler/nodes/ValueNode;
            aastore
            dup
            iconst_4
            aload 0 /* this */
            getfield org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.destElemKlass:Lorg/graalvm/compiler/nodes/ValueNode;
            aastore
            invokespecial org.graalvm.compiler.nodes.extended.ForeignCallNode.<init>:(Lorg/graalvm/compiler/core/common/spi/ForeignCallsProvider;Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;[Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.add:(Lorg/graalvm/compiler/graph/Node;)Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.extended.ForeignCallNode
            astore 7 /* call */
        start local 7 // org.graalvm.compiler.nodes.extended.ForeignCallNode call
         9: .line 143
            aload 7 /* call */
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode.stateAfter:()Lorg/graalvm/compiler/nodes/FrameState;
            invokevirtual org.graalvm.compiler.nodes.extended.ForeignCallNode.setStateAfter:(Lorg/graalvm/compiler/nodes/FrameState;)V
        10: .line 144
            aload 3 /* graph */
            aload 0 /* this */
            aload 7 /* call */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.replaceFixedWithFixed:(Lorg/graalvm/compiler/nodes/FixedWithNextNode;Lorg/graalvm/compiler/nodes/FixedWithNextNode;)V
        end local 7 // org.graalvm.compiler.nodes.extended.ForeignCallNode call
        end local 6 // org.graalvm.compiler.nodes.ValueNode len
        end local 5 // org.graalvm.compiler.nodes.ValueNode destAddr
        end local 4 // org.graalvm.compiler.nodes.ValueNode srcAddr
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 2 // org.graalvm.compiler.core.common.spi.ForeignCallDescriptor desc
        11: .line 146
      StackMap locals: org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode org.graalvm.compiler.nodes.spi.LoweringTool
      StackMap stack:
            return
        end local 1 // org.graalvm.compiler.nodes.spi.LoweringTool tool
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;
            0   12     1      tool  Lorg/graalvm/compiler/nodes/spi/LoweringTool;
            2   11     2      desc  Lorg/graalvm/compiler/core/common/spi/ForeignCallDescriptor;
            3   11     3     graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            4   11     4   srcAddr  Lorg/graalvm/compiler/nodes/ValueNode;
            5   11     5  destAddr  Lorg/graalvm/compiler/nodes/ValueNode;
            6   11     6       len  Lorg/graalvm/compiler/nodes/ValueNode;
            9   11     7      call  Lorg/graalvm/compiler/nodes/extended/ForeignCallNode;
    MethodParameters:
      Name  Flags
      tool  

  public jdk.internal.vm.compiler.word.LocationIdentity getKilledLocationIdentity();
    descriptor: ()Ljdk/internal/vm/compiler/word/LocationIdentity;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
         0: .line 154
            invokestatic jdk.internal.vm.compiler.word.LocationIdentity.any:()Ljdk/internal/vm/compiler/word/LocationIdentity;
            areturn
        end local 0 // org.graalvm.compiler.replacements.arraycopy.CheckcastArrayCopyCallNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/arraycopy/CheckcastArrayCopyCallNode;

  public static native int checkcastArraycopy(java.lang.Object, int, java.lang.Object, int, int, org.graalvm.compiler.word.Word, java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;ILjava/lang/Object;IILorg/graalvm/compiler/word/Word;Ljava/lang/Object;Z)I
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.graph.Node$NodeIntrinsic()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
      6:
      7:
        org.graalvm.compiler.graph.Node$ConstantNodeParameter()
    MethodParameters:
                  Name  Flags
      src               
      srcPos            
      dest              
      destPos           
      length            
      superCheckOffset  
      destElemKlass     
      uninit            
}
SourceFile: "CheckcastArrayCopyCallNode.java"
InnerClasses:
  public abstract ConstantNodeParameter = org.graalvm.compiler.graph.Node$ConstantNodeParameter of org.graalvm.compiler.graph.Node
  public abstract InjectedNodeParameter = org.graalvm.compiler.graph.Node$InjectedNodeParameter of org.graalvm.compiler.graph.Node
  public abstract Input = org.graalvm.compiler.graph.Node$Input of org.graalvm.compiler.graph.Node
  public abstract NodeIntrinsic = org.graalvm.compiler.graph.Node$NodeIntrinsic of org.graalvm.compiler.graph.Node
  public abstract ValueNumberable = org.graalvm.compiler.graph.Node$ValueNumberable of org.graalvm.compiler.graph.Node
  public final GuardsStage = org.graalvm.compiler.nodes.StructuredGraph$GuardsStage of org.graalvm.compiler.nodes.StructuredGraph
  public abstract Single = org.graalvm.compiler.nodes.memory.MemoryCheckpoint$Single of org.graalvm.compiler.nodes.memory.MemoryCheckpoint
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.nodeinfo.NodeInfo(allowedUsageTypes = {org.graalvm.compiler.nodeinfo.InputType.Memory:Lorg/graalvm/compiler/nodeinfo/InputType;, org.graalvm.compiler.nodeinfo.InputType.Value:Lorg/graalvm/compiler/nodeinfo/InputType;}, cycles = org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_UNKNOWN:Lorg/graalvm/compiler/nodeinfo/NodeCycles;, size = org.graalvm.compiler.nodeinfo.NodeSize.SIZE_UNKNOWN:Lorg/graalvm/compiler/nodeinfo/NodeSize;)