public class com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray extends com.oracle.truffle.nfi.test.NFITest$NFITestRootNode
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray
  super_class: com.oracle.truffle.nfi.test.NFITest$NFITestRootNode
{
  private final java.lang.Class<?> finalJavaType;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private final java.lang.Object store;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object sum;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  com.oracle.truffle.api.interop.InteropLibrary storeInterop;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  com.oracle.truffle.api.interop.InteropLibrary sumInterop;
    descriptor: Lcom/oracle/truffle/api/interop/InteropLibrary;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  final com.oracle.truffle.nfi.test.ArrayNFITest this$0;
    descriptor: Lcom/oracle/truffle/nfi/test/ArrayNFITest;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(com.oracle.truffle.nfi.test.ArrayNFITest);
    descriptor: (Lcom/oracle/truffle/nfi/test/ArrayNFITest;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray this
         0: .line 104
            aload 0 /* this */
            aload 1
            putfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.this$0:Lcom/oracle/truffle/nfi/test/ArrayNFITest;
            aload 0 /* this */
            invokespecial com.oracle.truffle.nfi.test.NFITest$NFITestRootNode.<init>:()V
         1: .line 105
            aload 0 /* this */
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.javaType:Ljava/lang/Class;
            putfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.finalJavaType:Ljava/lang/Class;
         2: .line 106
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "store_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.nativeType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "([%s], uint32, %s) : void"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.nativeType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            aastore
            dup
            iconst_1
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.nativeType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.nfi.test.ArrayNFITest.lookupAndBind:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            putfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.store:Ljava/lang/Object;
         3: .line 107
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "sum_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.nativeType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "([%s], uint32) : %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.nativeType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            aastore
            dup
            iconst_1
            aload 1
            getfield com.oracle.truffle.nfi.test.ArrayNFITest.nativeType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.nfi.test.ArrayNFITest.lookupAndBind:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            putfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.sum:Ljava/lang/Object;
         4: .line 109
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.store:Ljava/lang/Object;
            invokestatic com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.getInterop:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/InteropLibrary;
            putfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.storeInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
         5: .line 110
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.sum:Ljava/lang/Object;
            invokestatic com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.getInterop:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/InteropLibrary;
            putfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.sumInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
         6: .line 111
            return
        end local 0 // com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/nfi/test/ArrayNFITest$CreateAndSumArray;
    MethodParameters:
        Name  Flags
      this$0  final

  private void verifyArray(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray this
        start local 1 // java.lang.Object array
         0: .line 115
            aload 1 /* array */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            istore 2 /* length */
        start local 2 // int length
         1: .line 116
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 17
         3: .line 117
      StackMap locals: int int
      StackMap stack:
            aload 1 /* array */
            iload 3 /* i */
            invokestatic java.lang.reflect.Array.get:(Ljava/lang/Object;I)Ljava/lang/Object;
            astore 4 /* elem */
        start local 4 // java.lang.Object elem
         4: .line 118
            ldc "array element"
            aload 4 /* elem */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.finalJavaType:Ljava/lang/Class;
            invokestatic org.hamcrest.CoreMatchers.instanceOf:(Ljava/lang/Class;)Lorg/hamcrest/Matcher;
            invokestatic org.hamcrest.CoreMatchers.is:(Lorg/hamcrest/Matcher;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         5: .line 119
            lconst_0
            lstore 5 /* actual */
        start local 5 // long actual
         6: .line 120
            iload 3 /* i */
            iconst_1
            iadd
            i2l
            lstore 7 /* expected */
        start local 7 // long expected
         7: .line 121
            aload 4 /* elem */
            instanceof java.lang.Number
            ifeq 10
         8: .line 122
            aload 4 /* elem */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.longValue:()J
            lstore 5 /* actual */
         9: .line 123
            goto 15
      StackMap locals: java.lang.Object long long
      StackMap stack:
        10: aload 4 /* elem */
            instanceof java.lang.Character
            ifeq 13
        11: .line 124
            aload 4 /* elem */
            checkcast java.lang.Character
            invokevirtual java.lang.Character.charValue:()C
            i2l
            lstore 5 /* actual */
        12: .line 125
            goto 15
      StackMap locals:
      StackMap stack:
        13: aload 4 /* elem */
            instanceof java.lang.Boolean
            ifeq 15
        14: .line 130
            return
        15: .line 132
      StackMap locals:
      StackMap stack:
            ldc "array element"
            lload 7 /* expected */
            lload 5 /* actual */
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        end local 7 // long expected
        end local 5 // long actual
        end local 4 // java.lang.Object elem
        16: .line 116
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 3 /* i */
            iload 2 /* length */
            if_icmplt 3
        end local 3 // int i
        18: .line 134
            return
        end local 2 // int length
        end local 1 // java.lang.Object array
        end local 0 // com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   19     0      this  Lcom/oracle/truffle/nfi/test/ArrayNFITest$CreateAndSumArray;
            0   19     1     array  Ljava/lang/Object;
            1   19     2    length  I
            2   18     3         i  I
            4   16     4      elem  Ljava/lang/Object;
            6   16     5    actual  J
            7   16     7  expected  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      array  

  public java.lang.Object executeTest(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 138
            aload 1 /* frame */
            invokeinterface com.oracle.truffle.api.frame.VirtualFrame.getArguments:()[Ljava/lang/Object;
            iconst_0
            aaload
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 2 /* arrayLength */
        start local 2 // int arrayLength
         1: .line 140
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.finalJavaType:Ljava/lang/Class;
            iload 2 /* arrayLength */
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            astore 3 /* array */
        start local 3 // java.lang.Object array
         2: .line 141
            getstatic com.oracle.truffle.nfi.test.ArrayNFITest.runWithPolyglot:Lcom/oracle/truffle/tck/TruffleRunner$RunWithPolyglotRule;
            invokevirtual com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule.getTruffleTestEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 3 /* array */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.asGuestValue:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* wrappedArray */
        start local 4 // java.lang.Object wrappedArray
         3: .line 144
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 7
         5: .line 145
      StackMap locals: com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray com.oracle.truffle.api.frame.VirtualFrame int java.lang.Object java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.storeInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.store:Ljava/lang/Object;
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* wrappedArray */
            aastore
            dup
            iconst_1
            iload 5 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 5 /* i */
            iconst_1
            iadd
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 144
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 5 /* i */
            iload 2 /* arrayLength */
            if_icmplt 5
        end local 5 // int i
         8: .line 147
            aload 0 /* this */
            aload 3 /* array */
            invokevirtual com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.verifyArray:(Ljava/lang/Object;)V
         9: .line 148
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.sumInterop:Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray.sum:Ljava/lang/Object;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* wrappedArray */
            aastore
            dup
            iconst_1
            iload 2 /* arrayLength */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
        10: areturn
        11: .line 149
      StackMap locals: com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray com.oracle.truffle.api.frame.VirtualFrame int java.lang.Object java.lang.Object
      StackMap stack: com.oracle.truffle.api.interop.InteropException
            astore 5 /* ex */
        start local 5 // com.oracle.truffle.api.interop.InteropException ex
        12: .line 150
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
        13: .line 151
            new java.lang.AssertionError
            dup
            aload 5 /* ex */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 5 // com.oracle.truffle.api.interop.InteropException ex
        end local 4 // java.lang.Object wrappedArray
        end local 3 // java.lang.Object array
        end local 2 // int arrayLength
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0          this  Lcom/oracle/truffle/nfi/test/ArrayNFITest$CreateAndSumArray;
            0   14     1         frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1   14     2   arrayLength  I
            2   14     3         array  Ljava/lang/Object;
            3   14     4  wrappedArray  Ljava/lang/Object;
            4    8     5             i  I
           12   14     5            ex  Lcom/oracle/truffle/api/interop/InteropException;
      Exception table:
        from    to  target  type
           3    10      11  Class com.oracle.truffle.api.interop.InteropException
    MethodParameters:
       Name  Flags
      frame  
}
SourceFile: "ArrayNFITest.java"
NestHost: com.oracle.truffle.nfi.test.ArrayNFITest
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  public CreateAndSumArray = com.oracle.truffle.nfi.test.ArrayNFITest$CreateAndSumArray of com.oracle.truffle.nfi.test.ArrayNFITest
  protected abstract NFITestRootNode = com.oracle.truffle.nfi.test.NFITest$NFITestRootNode of com.oracle.truffle.nfi.test.NFITest
  public final RunWithPolyglotRule = com.oracle.truffle.tck.TruffleRunner$RunWithPolyglotRule of com.oracle.truffle.tck.TruffleRunner