public class com.oracle.truffle.nfi.test.PointerNFITest extends com.oracle.truffle.nfi.test.NFITest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.nfi.test.PointerNFITest
  super_class: com.oracle.truffle.nfi.test.NFITest
{
  public int initialLength;
    descriptor: I
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.runners.Parameterized$Parameter(value = 0)

  public com.oracle.truffle.nfi.test.PointerNFITest$Mode mode;
    descriptor: Lcom/oracle/truffle/nfi/test/PointerNFITest$Mode;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.runners.Parameterized$Parameter(value = 1)

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
         0: .line 64
            aload 0 /* this */
            invokespecial com.oracle.truffle.nfi.test.NFITest.<init>:()V
            return
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/nfi/test/PointerNFITest;

  public static java.util.Collection<java.lang.Object[]> data();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=0
         0: .line 73
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 0 /* ret */
        start local 0 // java.util.ArrayList ret
         1: .line 74
            invokestatic com.oracle.truffle.nfi.test.PointerNFITest$Mode.values:()[Lcom/oracle/truffle/nfi/test/PointerNFITest$Mode;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 6
      StackMap locals: java.util.ArrayList top int int com.oracle.truffle.nfi.test.PointerNFITest$Mode[]
      StackMap stack:
         2: aload 4
            iload 2
            aaload
            astore 1 /* mode */
        start local 1 // com.oracle.truffle.nfi.test.PointerNFITest$Mode mode
         3: .line 75
            aload 0 /* ret */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 1 /* mode */
            aastore
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         4: .line 76
            aload 0 /* ret */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            iconst_5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 1 /* mode */
            aastore
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // com.oracle.truffle.nfi.test.PointerNFITest$Mode mode
         5: .line 74
            iinc 2 1
      StackMap locals:
      StackMap stack:
         6: iload 2
            iload 3
            if_icmplt 2
         7: .line 78
            aload 0 /* ret */
            areturn
        end local 0 // java.util.ArrayList ret
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    8     0   ret  Ljava/util/ArrayList<[Ljava/lang/Object;>;
            3    5     1  mode  Lcom/oracle/truffle/nfi/test/PointerNFITest$Mode;
    Signature: ()Ljava/util/Collection<[Ljava/lang/Object;>;
    RuntimeVisibleAnnotations: 
      org.junit.runners.Parameterized$Parameters(name = "{0} {1}")

  private com.oracle.truffle.nfi.test.interop.NativeVector prepareVector();
    descriptor: ()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
         0: .line 85
            new com.oracle.truffle.nfi.test.interop.NativeVector
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.PointerNFITest.initialLength:I
            newarray 7
            invokespecial com.oracle.truffle.nfi.test.interop.NativeVector.<init>:([D)V
            astore 1 /* ret */
        start local 1 // com.oracle.truffle.nfi.test.interop.NativeVector ret
         1: .line 86
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.test.PointerNFITest.mode:Lcom/oracle/truffle/nfi/test/PointerNFITest$Mode;
            getstatic com.oracle.truffle.nfi.test.PointerNFITest$Mode.NATIVE:Lcom/oracle/truffle/nfi/test/PointerNFITest$Mode;
            if_acmpne 3
         2: .line 87
            aload 1 /* ret */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.toNative:()V
         3: .line 90
      StackMap locals: com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 7
         5: .line 91
      StackMap locals: int
      StackMap stack:
            aload 1 /* ret */
            iload 2 /* i */
            ldc 42.0
            iload 2 /* i */
            i2d
            dmul
            ldc 17.0
            dadd
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.set:(ID)V
         6: .line 90
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            aload 1 /* ret */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            if_icmplt 5
        end local 2 // int i
         8: .line 94
            aload 1 /* ret */
            areturn
        end local 1 // com.oracle.truffle.nfi.test.interop.NativeVector ret
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            1    9     1   ret  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            4    8     2     i  I

  private static double sum(com.oracle.truffle.nfi.test.interop.NativeVector);
    descriptor: (Lcom/oracle/truffle/nfi/test/interop/NativeVector;)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.oracle.truffle.nfi.test.interop.NativeVector vector
         0: .line 98
            dconst_0
            dstore 1 /* ret */
        start local 1 // double ret
         1: .line 99
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 100
      StackMap locals: double int
      StackMap stack:
            dload 1 /* ret */
            aload 0 /* vector */
            iload 3 /* i */
            i2l
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.readArrayElement:(J)D
            dadd
            dstore 1 /* ret */
         4: .line 99
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            aload 0 /* vector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            if_icmplt 3
        end local 3 // int i
         6: .line 102
            dload 1 /* ret */
            dreturn
        end local 1 // double ret
        end local 0 // com.oracle.truffle.nfi.test.interop.NativeVector vector
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  vector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            1    7     1     ret  D
            2    6     3       i  I
    MethodParameters:
        Name  Flags
      vector  

  public void testFold(com.oracle.truffle.api.CallTarget);
    descriptor: (Lcom/oracle/truffle/api/CallTarget;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=10, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
        start local 1 // com.oracle.truffle.api.CallTarget fold
         0: .line 114
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.prepareVector:()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            astore 4 /* testVector */
        start local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
         2: .line 115
            aload 4 /* testVector */
            invokestatic com.oracle.truffle.nfi.test.PointerNFITest.sum:(Lcom/oracle/truffle/nfi/test/interop/NativeVector;)D
            dstore 5 /* sumBefore */
        start local 5 // double sumBefore
         3: .line 117
            aload 1 /* fold */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* testVector */
            aastore
            dup
            iconst_1
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* ret */
        start local 7 // java.lang.Object ret
         4: .line 119
            ldc "return type"
            aload 7 /* ret */
            ldc Ljava/lang/Double;
            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 120
            aload 7 /* ret */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            dstore 8 /* retValue */
        start local 8 // double retValue
         6: .line 122
            ldc "return value"
            dload 5 /* sumBefore */
            dload 8 /* retValue */
            ldc 4.9E-324
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;DDD)V
         7: .line 123
            ldc "sum after"
            dload 5 /* sumBefore */
            aload 4 /* testVector */
            invokestatic com.oracle.truffle.nfi.test.PointerNFITest.sum:(Lcom/oracle/truffle/nfi/test/interop/NativeVector;)D
            ldc 4.9E-324
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;DDD)V
        end local 8 // double retValue
        end local 7 // java.lang.Object ret
        end local 5 // double sumBefore
         8: .line 124
            aload 4 /* testVector */
            ifnull 14
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 14
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.api.CallTarget java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack: java.lang.Throwable
         9: astore 2
            aload 4 /* testVector */
            ifnull 10
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
      StackMap locals:
      StackMap stack:
        10: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 3
            aload 2
            ifnonnull 12
            aload 3
            astore 2
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 2
            aload 3
            if_acmpeq 13
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 2
            athrow
        14: .line 125
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.CallTarget fold
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            0   15     1        fold  Lcom/oracle/truffle/api/CallTarget;
            2   10     4  testVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            3    8     5   sumBefore  D
            4    8     7         ret  Ljava/lang/Object;
            6    8     8    retValue  D
      Exception table:
        from    to  target  type
           2     8       9  any
           1    11      11  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.oracle.truffle.tck.TruffleRunner$Inject(value = Lcom/oracle/truffle/nfi/test/PointerNFITest$FoldVector;)
    MethodParameters:
      Name  Flags
      fold  

  private void verifyInc(com.oracle.truffle.nfi.test.interop.NativeVector, double);
    descriptor: (Lcom/oracle/truffle/nfi/test/interop/NativeVector;D)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=3
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
        start local 1 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
        start local 2 // double inc
         0: .line 135
            aconst_null
            astore 4
            aconst_null
            astore 5
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.prepareVector:()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            astore 6 /* orig */
        start local 6 // com.oracle.truffle.nfi.test.interop.NativeVector orig
         2: .line 136
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         3: goto 6
         4: .line 137
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.nfi.test.interop.NativeVector double java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* orig */
            iload 7 /* i */
            i2l
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.readArrayElement:(J)D
            dload 2 /* inc */
            dadd
            aload 1 /* testVector */
            iload 7 /* i */
            i2l
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.readArrayElement:(J)D
            ldc 4.9E-324
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;DDD)V
         5: .line 136
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 7 /* i */
            aload 1 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            if_icmplt 4
        end local 7 // int i
         7: .line 139
            aload 6 /* orig */
            ifnull 13
            aload 6 /* orig */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 13
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.nfi.test.interop.NativeVector double java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack: java.lang.Throwable
         8: astore 4
            aload 6 /* orig */
            ifnull 9
            aload 6 /* orig */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 6 // com.oracle.truffle.nfi.test.interop.NativeVector orig
      StackMap locals:
      StackMap stack:
         9: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 5
            aload 4
            ifnonnull 11
            aload 5
            astore 4
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 4
            aload 5
            if_acmpeq 12
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 4
            athrow
        13: .line 140
      StackMap locals:
      StackMap stack:
            return
        end local 2 // double inc
        end local 1 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            0   14     1  testVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            0   14     2         inc  D
            2    9     6        orig  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            3    7     7           i  I
      Exception table:
        from    to  target  type
           2     7       8  any
           1    10      10  any
    MethodParameters:
            Name  Flags
      testVector  
      inc         

  public void testIncByNumber(com.oracle.truffle.api.CallTarget);
    descriptor: (Lcom/oracle/truffle/api/CallTarget;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
        start local 1 // com.oracle.truffle.api.CallTarget inc
         0: .line 144
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.prepareVector:()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            astore 4 /* testVector */
        start local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
         2: .line 145
            aload 1 /* inc */
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* testVector */
            aastore
            dup
            iconst_1
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            ldc 5.5
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
            invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 146
            aload 0 /* this */
            aload 4 /* testVector */
            ldc 5.5
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.verifyInc:(Lcom/oracle/truffle/nfi/test/interop/NativeVector;D)V
         4: .line 147
            aload 4 /* testVector */
            ifnull 10
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 10
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.api.CallTarget java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack: java.lang.Throwable
         5: astore 2
            aload 4 /* testVector */
            ifnull 6
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
      StackMap locals:
      StackMap stack:
         6: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 3
            aload 2
            ifnonnull 8
            aload 3
            astore 2
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 2
            aload 3
            if_acmpeq 9
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
         9: aload 2
            athrow
        10: .line 148
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.CallTarget inc
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            0   11     1         inc  Lcom/oracle/truffle/api/CallTarget;
            2    6     4  testVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
      Exception table:
        from    to  target  type
           2     4       5  any
           1     7       7  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.oracle.truffle.tck.TruffleRunner$Inject(value = Lcom/oracle/truffle/nfi/test/PointerNFITest$IncVector;)
    MethodParameters:
      Name  Flags
      inc   

  public void testIncByManagedVector(com.oracle.truffle.api.CallTarget);
    descriptor: (Lcom/oracle/truffle/api/CallTarget;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
        start local 1 // com.oracle.truffle.api.CallTarget inc
         0: .line 152
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.prepareVector:()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            astore 4 /* testVector */
        start local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
         2: .line 153
            new com.oracle.truffle.nfi.test.interop.NativeVector
            dup
            iconst_1
            newarray 7
            dup
            iconst_0
            ldc 7.4
            dastore
            invokespecial com.oracle.truffle.nfi.test.interop.NativeVector.<init>:([D)V
            astore 5 /* incVector */
        start local 5 // com.oracle.truffle.nfi.test.interop.NativeVector incVector
         3: .line 155
            aload 1 /* inc */
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* testVector */
            aastore
            dup
            iconst_1
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 5 /* incVector */
            aastore
            invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 157
            ldc "incVector shouldn't be transitioned to native"
            aload 5 /* incVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.isPointer:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         5: .line 158
            aload 0 /* this */
            aload 4 /* testVector */
            ldc 7.4
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.verifyInc:(Lcom/oracle/truffle/nfi/test/interop/NativeVector;D)V
         6: .line 159
            aload 5 /* incVector */
            ifnull 9
            aload 5 /* incVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 9
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.api.CallTarget java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack: java.lang.Throwable
         7: astore 2
            aload 5 /* incVector */
            ifnull 8
            aload 5 /* incVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 5 // com.oracle.truffle.nfi.test.interop.NativeVector incVector
      StackMap locals:
      StackMap stack:
         8: aload 2
            athrow
      StackMap locals:
      StackMap stack:
         9: aload 4 /* testVector */
            ifnull 17
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 3
            aload 2
            ifnonnull 11
            aload 3
            astore 2
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 2
            aload 3
            if_acmpeq 12
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 4 /* testVector */
            ifnull 13
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
      StackMap locals:
      StackMap stack:
        13: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 3
            aload 2
            ifnonnull 15
            aload 3
            astore 2
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 2
            aload 3
            if_acmpeq 16
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 2
            athrow
        17: .line 160
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.CallTarget inc
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            0   18     1         inc  Lcom/oracle/truffle/api/CallTarget;
            2   13     4  testVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            3    8     5   incVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
      Exception table:
        from    to  target  type
           3     6       7  any
           2     9      10  any
           1    14      14  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.oracle.truffle.tck.TruffleRunner$Inject(value = Lcom/oracle/truffle/nfi/test/PointerNFITest$IncVector;)
    MethodParameters:
      Name  Flags
      inc   

  public void testIncByNativeVector(com.oracle.truffle.api.CallTarget);
    descriptor: (Lcom/oracle/truffle/api/CallTarget;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
        start local 1 // com.oracle.truffle.api.CallTarget inc
         0: .line 164
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.prepareVector:()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            astore 4 /* testVector */
        start local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
         2: .line 165
            new com.oracle.truffle.nfi.test.interop.NativeVector
            dup
            iconst_1
            newarray 7
            dup
            iconst_0
            ldc 3.8
            dastore
            invokespecial com.oracle.truffle.nfi.test.interop.NativeVector.<init>:([D)V
            astore 5 /* incVector */
        start local 5 // com.oracle.truffle.nfi.test.interop.NativeVector incVector
         3: .line 166
            aload 5 /* incVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.toNative:()V
         4: .line 168
            aload 1 /* inc */
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* testVector */
            aastore
            dup
            iconst_1
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.getArraySize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 5 /* incVector */
            aastore
            invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 170
            aload 0 /* this */
            aload 4 /* testVector */
            ldc 3.8
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.verifyInc:(Lcom/oracle/truffle/nfi/test/interop/NativeVector;D)V
         6: .line 171
            aload 5 /* incVector */
            ifnull 9
            aload 5 /* incVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 9
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.api.CallTarget java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack: java.lang.Throwable
         7: astore 2
            aload 5 /* incVector */
            ifnull 8
            aload 5 /* incVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 5 // com.oracle.truffle.nfi.test.interop.NativeVector incVector
      StackMap locals:
      StackMap stack:
         8: aload 2
            athrow
      StackMap locals:
      StackMap stack:
         9: aload 4 /* testVector */
            ifnull 17
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 3
            aload 2
            ifnonnull 11
            aload 3
            astore 2
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 2
            aload 3
            if_acmpeq 12
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 4 /* testVector */
            ifnull 13
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
      StackMap locals:
      StackMap stack:
        13: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 3
            aload 2
            ifnonnull 15
            aload 3
            astore 2
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 2
            aload 3
            if_acmpeq 16
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 2
            athrow
        17: .line 172
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.CallTarget inc
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            0   18     1         inc  Lcom/oracle/truffle/api/CallTarget;
            2   13     4  testVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            3    8     5   incVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
      Exception table:
        from    to  target  type
           3     6       7  any
           2     9      10  any
           1    14      14  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.oracle.truffle.tck.TruffleRunner$Inject(value = Lcom/oracle/truffle/nfi/test/PointerNFITest$IncVector;)
    MethodParameters:
      Name  Flags
      inc   

  public void testSlowPath(com.oracle.truffle.api.CallTarget);
    descriptor: (Lcom/oracle/truffle/api/CallTarget;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=2
        start local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
        start local 1 // com.oracle.truffle.api.CallTarget test
         0: .line 235
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.test.PointerNFITest.prepareVector:()Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            astore 4 /* testVector */
        start local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
         2: .line 236
            aload 1 /* test */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* testVector */
            aastore
            invokeinterface com.oracle.truffle.api.CallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* ret */
        start local 5 // java.lang.Object ret
         3: .line 238
            ldc "return type"
            aload 5 /* ret */
            ldc Ljava/lang/Double;
            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
         4: .line 239
            aload 5 /* ret */
            checkcast java.lang.Double
            invokevirtual java.lang.Double.doubleValue:()D
            dstore 6 /* retValue */
        start local 6 // double retValue
         5: .line 241
            ldc "return value"
            aload 4 /* testVector */
            lconst_0
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.readArrayElement:(J)D
            dload 6 /* retValue */
            ldc 4.9E-324
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;DDD)V
        end local 6 // double retValue
        end local 5 // java.lang.Object ret
         6: .line 242
            aload 4 /* testVector */
            ifnull 12
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
            goto 12
      StackMap locals: com.oracle.truffle.nfi.test.PointerNFITest com.oracle.truffle.api.CallTarget java.lang.Throwable java.lang.Throwable com.oracle.truffle.nfi.test.interop.NativeVector
      StackMap stack: java.lang.Throwable
         7: astore 2
            aload 4 /* testVector */
            ifnull 8
            aload 4 /* testVector */
            invokevirtual com.oracle.truffle.nfi.test.interop.NativeVector.close:()V
        end local 4 // com.oracle.truffle.nfi.test.interop.NativeVector testVector
      StackMap locals:
      StackMap stack:
         8: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 3
            aload 2
            ifnonnull 10
            aload 3
            astore 2
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 2
            aload 3
            if_acmpeq 11
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        11: aload 2
            athrow
        12: .line 243
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.CallTarget test
        end local 0 // com.oracle.truffle.nfi.test.PointerNFITest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lcom/oracle/truffle/nfi/test/PointerNFITest;
            0   13     1        test  Lcom/oracle/truffle/api/CallTarget;
            2    8     4  testVector  Lcom/oracle/truffle/nfi/test/interop/NativeVector;
            3    6     5         ret  Ljava/lang/Object;
            5    6     6    retValue  D
      Exception table:
        from    to  target  type
           2     6       7  any
           1     9       9  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.oracle.truffle.tck.TruffleRunner$Inject(value = Lcom/oracle/truffle/nfi/test/PointerNFITest$TestSlowPath;)
    MethodParameters:
      Name  Flags
      test  
}
SourceFile: "PointerNFITest.java"
NestMembers:
  com.oracle.truffle.nfi.test.PointerNFITest$FoldVector  com.oracle.truffle.nfi.test.PointerNFITest$IncVector  com.oracle.truffle.nfi.test.PointerNFITest$Mode  com.oracle.truffle.nfi.test.PointerNFITest$TestSlowPath
InnerClasses:
  public FoldVector = com.oracle.truffle.nfi.test.PointerNFITest$FoldVector of com.oracle.truffle.nfi.test.PointerNFITest
  public IncVector = com.oracle.truffle.nfi.test.PointerNFITest$IncVector of com.oracle.truffle.nfi.test.PointerNFITest
  public final Mode = com.oracle.truffle.nfi.test.PointerNFITest$Mode of com.oracle.truffle.nfi.test.PointerNFITest
  public TestSlowPath = com.oracle.truffle.nfi.test.PointerNFITest$TestSlowPath of com.oracle.truffle.nfi.test.PointerNFITest
  public abstract Inject = com.oracle.truffle.tck.TruffleRunner$Inject of com.oracle.truffle.tck.TruffleRunner
  public abstract Parameter = org.junit.runners.Parameterized$Parameter of org.junit.runners.Parameterized
  public abstract Parameters = org.junit.runners.Parameterized$Parameters of org.junit.runners.Parameterized
  public abstract UseParametersRunnerFactory = org.junit.runners.Parameterized$UseParametersRunnerFactory of org.junit.runners.Parameterized
    RuntimeVisibleAnnotations: 
      org.junit.runner.RunWith(value = Lorg/junit/runners/Parameterized;)
      org.junit.runners.Parameterized$UseParametersRunnerFactory(value = Lcom/oracle/truffle/tck/TruffleRunner$ParametersFactory;)