final class com.oracle.truffle.nfi.impl.LibFFIType$ArrayType extends com.oracle.truffle.nfi.impl.LibFFIType$BasePointerType
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.nfi.impl.LibFFIType$ArrayType
  super_class: com.oracle.truffle.nfi.impl.LibFFIType$BasePointerType
{
  final com.oracle.truffle.nfi.spi.types.NativeSimpleType elementType;
    descriptor: Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
    flags: (0x0010) ACC_FINAL

  final com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$HostObjectHelperNode uncachedHelper;
    descriptor: Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType$HostObjectHelperNode;
    flags: (0x0010) ACC_FINAL

  private static volatile int[] $SWITCH_TABLE$com$oracle$truffle$nfi$spi$types$NativeSimpleType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  void <init>(com.oracle.truffle.nfi.impl.LibFFIType$CachedTypeInfo, com.oracle.truffle.nfi.spi.types.NativeSimpleType);
    descriptor: (Lcom/oracle/truffle/nfi/impl/LibFFIType$CachedTypeInfo;Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
        start local 1 // com.oracle.truffle.nfi.impl.LibFFIType$CachedTypeInfo pointerType
        start local 2 // com.oracle.truffle.nfi.spi.types.NativeSimpleType elementType
         0: .line 462
            aload 0 /* this */
            aload 1 /* pointerType */
            getstatic com.oracle.truffle.nfi.impl.LibFFIType$Direction.JAVA_TO_NATIVE_ONLY:Lcom/oracle/truffle/nfi/impl/LibFFIType$Direction;
            iconst_0
            invokespecial com.oracle.truffle.nfi.impl.LibFFIType$BasePointerType.<init>:(Lcom/oracle/truffle/nfi/impl/LibFFIType$CachedTypeInfo;Lcom/oracle/truffle/nfi/impl/LibFFIType$Direction;Z)V
         1: .line 463
            invokestatic com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.$SWITCH_TABLE$com$oracle$truffle$nfi$spi$types$NativeSimpleType:()[I
            aload 2 /* elementType */
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            iaload
            tableswitch { // 2 - 11
                    2: 2
                    3: 2
                    4: 2
                    5: 2
                    6: 2
                    7: 2
                    8: 2
                    9: 2
                   10: 2
                   11: 2
              default: 4
          }
         2: .line 474
      StackMap locals: com.oracle.truffle.nfi.impl.LibFFIType$ArrayType com.oracle.truffle.nfi.impl.LibFFIType$CachedTypeInfo com.oracle.truffle.nfi.spi.types.NativeSimpleType
      StackMap stack:
            aload 0 /* this */
            aload 2 /* elementType */
            putfield com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.elementType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
         3: .line 475
            goto 5
         4: .line 477
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "only primitive array types are supported, got [%s]"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* elementType */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 479
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$UncachedHostObjectHelperNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.size:I
            aload 2 /* elementType */
            invokespecial com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$UncachedHostObjectHelperNode.<init>:(ILcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)V
            putfield com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.uncachedHelper:Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType$HostObjectHelperNode;
         6: .line 480
            return
        end local 2 // com.oracle.truffle.nfi.spi.types.NativeSimpleType elementType
        end local 1 // com.oracle.truffle.nfi.impl.LibFFIType$CachedTypeInfo pointerType
        end local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType;
            0    7     1  pointerType  Lcom/oracle/truffle/nfi/impl/LibFFIType$CachedTypeInfo;
            0    7     2  elementType  Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
    MethodParameters:
             Name  Flags
      pointerType  
      elementType  

  boolean accepts(com.oracle.truffle.nfi.spi.types.NativeSimpleType);
    descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
        start local 1 // com.oracle.truffle.nfi.spi.types.NativeSimpleType cachedType
         0: .line 484
            aload 1 /* cachedType */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.elementType:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // com.oracle.truffle.nfi.spi.types.NativeSimpleType cachedType
        end local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType;
            0    2     1  cachedType  Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    RuntimeInvisibleParameterAnnotations: 
      0:
        com.oracle.truffle.api.dsl.Cached(value = "this.elementType")
    MethodParameters:
            Name  Flags
      cachedType  

  void serialize(com.oracle.truffle.nfi.impl.NativeArgumentBuffer, java.lang.Object, com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$SerializeHelperNode);
    descriptor: (Lcom/oracle/truffle/nfi/impl/NativeArgumentBuffer;Ljava/lang/Object;Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType$SerializeHelperNode;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
        start local 1 // com.oracle.truffle.nfi.impl.NativeArgumentBuffer buffer
        start local 2 // java.lang.Object value
        start local 3 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$SerializeHelperNode serializeHelper
         0: .line 490
            aload 1 /* buffer */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.alignment:I
            invokevirtual com.oracle.truffle.nfi.impl.NativeArgumentBuffer.align:(I)V
         1: .line 491
            aload 3 /* serializeHelper */
            aload 0 /* this */
            aload 1 /* buffer */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$SerializeHelperNode.execute:(Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType;Lcom/oracle/truffle/nfi/impl/NativeArgumentBuffer;Ljava/lang/Object;)V
         2: .line 492
            return
        end local 3 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$SerializeHelperNode serializeHelper
        end local 2 // java.lang.Object value
        end local 1 // com.oracle.truffle.nfi.impl.NativeArgumentBuffer buffer
        end local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType;
            0    3     1           buffer  Lcom/oracle/truffle/nfi/impl/NativeArgumentBuffer;
            0    3     2            value  Ljava/lang/Object;
            0    3     3  serializeHelper  Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType$SerializeHelperNode;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                 Name  Flags
      buffer           
      value            
      serializeHelper  

  public java.lang.Object deserializeRet(com.oracle.truffle.nfi.impl.NativeArgumentBuffer, com.oracle.truffle.nfi.impl.NFILanguageImpl);
    descriptor: (Lcom/oracle/truffle/nfi/impl/NativeArgumentBuffer;Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
        start local 1 // com.oracle.truffle.nfi.impl.NativeArgumentBuffer buffer
        start local 2 // com.oracle.truffle.nfi.impl.NFILanguageImpl language
         0: .line 658
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
         1: .line 659
            new java.lang.AssertionError
            dup
            ldc "Arrays can only be passed from Java to native"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 2 // com.oracle.truffle.nfi.impl.NFILanguageImpl language
        end local 1 // com.oracle.truffle.nfi.impl.NativeArgumentBuffer buffer
        end local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType;
            0    2     1    buffer  Lcom/oracle/truffle/nfi/impl/NativeArgumentBuffer;
            0    2     2  language  Lcom/oracle/truffle/nfi/impl/NFILanguageImpl;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage(name = "deserialize")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.CachedLanguage()
    MethodParameters:
          Name  Flags
      buffer    
      language  

  public com.oracle.truffle.nfi.impl.ClosureArgumentNode createClosureArgumentNode();
    descriptor: ()Lcom/oracle/truffle/nfi/impl/ClosureArgumentNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
         0: .line 664
            new java.lang.AssertionError
            dup
            ldc "Arrays can only be passed from Java to native"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 0 // com.oracle.truffle.nfi.impl.LibFFIType$ArrayType this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/nfi/impl/LibFFIType$ArrayType;

  static int[] $SWITCH_TABLE$com$oracle$truffle$nfi$spi$types$NativeSimpleType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 456
            getstatic com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.$SWITCH_TABLE$com$oracle$truffle$nfi$spi$types$NativeSimpleType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.values:()[Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.DOUBLE:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 11
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.FLOAT:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 10
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.NULLABLE:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 15
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.OBJECT:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 14
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.POINTER:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 12
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.SINT16:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            iconst_5
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.SINT32:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 7
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.SINT64:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 9
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.SINT8:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            iconst_3
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.STRING:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 13
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.UINT16:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            iconst_4
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.UINT32:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 6
            iastore
        36: goto 38
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        37: pop
      StackMap locals:
      StackMap stack:
        38: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.UINT64:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            bipush 8
            iastore
        39: goto 41
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        40: pop
      StackMap locals:
      StackMap stack:
        41: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.UINT8:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            iconst_2
            iastore
        42: goto 44
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        43: pop
      StackMap locals:
      StackMap stack:
        44: aload 0
            getstatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.VOID:Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeSimpleType.ordinal:()I
            iconst_1
            iastore
        45: goto 47
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        46: pop
      StackMap locals:
      StackMap stack:
        47: aload 0
            dup
            putstatic com.oracle.truffle.nfi.impl.LibFFIType$ArrayType.$SWITCH_TABLE$com$oracle$truffle$nfi$spi$types$NativeSimpleType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
          35    36      37  Class java.lang.NoSuchFieldError
          38    39      40  Class java.lang.NoSuchFieldError
          41    42      43  Class java.lang.NoSuchFieldError
          44    45      46  Class java.lang.NoSuchFieldError
}
SourceFile: "LibFFIType.java"
NestHost: com.oracle.truffle.nfi.impl.LibFFIType
InnerClasses:
  final ArrayType = com.oracle.truffle.nfi.impl.LibFFIType$ArrayType of com.oracle.truffle.nfi.impl.LibFFIType
  abstract CachedHostObjectHelperNode = com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$CachedHostObjectHelperNode of com.oracle.truffle.nfi.impl.LibFFIType$ArrayType
  abstract HostObjectHelperNode = com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$HostObjectHelperNode of com.oracle.truffle.nfi.impl.LibFFIType$ArrayType
  abstract SerializeHelperNode = com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$SerializeHelperNode of com.oracle.truffle.nfi.impl.LibFFIType$ArrayType
  final UncachedHostObjectHelperNode = com.oracle.truffle.nfi.impl.LibFFIType$ArrayType$UncachedHostObjectHelperNode of com.oracle.truffle.nfi.impl.LibFFIType$ArrayType
  abstract BasePointerType = com.oracle.truffle.nfi.impl.LibFFIType$BasePointerType of com.oracle.truffle.nfi.impl.LibFFIType
  abstract CachedTypeInfo = com.oracle.truffle.nfi.impl.LibFFIType$CachedTypeInfo of com.oracle.truffle.nfi.impl.LibFFIType
  final Direction = com.oracle.truffle.nfi.impl.LibFFIType$Direction of com.oracle.truffle.nfi.impl.LibFFIType
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportLibrary(value = Lcom/oracle/truffle/nfi/impl/NativeArgumentLibrary;)