final class com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend implements com.oracle.truffle.nfi.spi.NFIBackend
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend
  super_class: java.lang.Object
{
  private final com.oracle.truffle.nfi.spi.NFIBackendTools tools;
    descriptor: Lcom/oracle/truffle/nfi/spi/NFIBackendTools;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  void <init>(com.oracle.truffle.llvm.nfi.SulongNFI, com.oracle.truffle.nfi.spi.NFIBackendTools);
    descriptor: (Lcom/oracle/truffle/llvm/nfi/SulongNFI;Lcom/oracle/truffle/nfi/spi/NFIBackendTools;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
        start local 2 // com.oracle.truffle.nfi.spi.NFIBackendTools tools
         0: .line 89
            aload 0 /* this */
            aload 1
            putfield com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend.this$0:Lcom/oracle/truffle/llvm/nfi/SulongNFI;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 90
            aload 0 /* this */
            aload 2 /* tools */
            putfield com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend.tools:Lcom/oracle/truffle/nfi/spi/NFIBackendTools;
         2: .line 91
            return
        end local 2 // com.oracle.truffle.nfi.spi.NFIBackendTools tools
        end local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/llvm/nfi/SulongNFI$SulongNFIBackend;
            0    3     2  tools  Lcom/oracle/truffle/nfi/spi/NFIBackendTools;
    MethodParameters:
        Name  Flags
      this$0  final
      tools   

  public com.oracle.truffle.api.CallTarget parse(com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor);
    descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;)Lcom/oracle/truffle/api/CallTarget;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
        start local 1 // com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor descriptor
         0: .line 95
            ldc Lcom/oracle/truffle/llvm/nfi/SulongNFI;
            invokestatic com.oracle.truffle.llvm.nfi.SulongNFI.access$1:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.TruffleLanguage$Env
            astore 2 /* env */
        start local 2 // com.oracle.truffle.api.TruffleLanguage$Env env
         1: .line 96
            aload 2 /* env */
            aload 1 /* descriptor */
            invokevirtual com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor.getFilename:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInternalTruffleFile:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            astore 3 /* file */
        start local 3 // com.oracle.truffle.api.TruffleFile file
         2: .line 98
            ldc "llvm"
            aload 3 /* file */
            invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Lcom/oracle/truffle/api/TruffleFile;)Lcom/oracle/truffle/api/source/Source$SourceBuilder;
            invokevirtual com.oracle.truffle.api.source.Source$SourceBuilder.build:()Lcom/oracle/truffle/api/source/Source;
            astore 4 /* source */
        start local 4 // com.oracle.truffle.api.source.Source source
         3: .line 99
            aload 2 /* env */
            aload 4 /* source */
            iconst_0
            anewarray java.lang.String
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.parsePublic:(Lcom/oracle/truffle/api/source/Source;[Ljava/lang/String;)Lcom/oracle/truffle/api/CallTarget;
            astore 5 /* target */
        start local 5 // com.oracle.truffle.api.CallTarget target
         4: .line 100
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend.this$0:Lcom/oracle/truffle/llvm/nfi/SulongNFI;
            aload 5 /* target */
            invokestatic com.oracle.truffle.llvm.nfi.SulongNFI.wrap:(Lcom/oracle/truffle/llvm/nfi/SulongNFI;Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/CallTarget;
         5: areturn
        end local 5 // com.oracle.truffle.api.CallTarget target
        end local 4 // com.oracle.truffle.api.source.Source source
         6: .line 101
      StackMap locals: com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor com.oracle.truffle.api.TruffleLanguage$Env com.oracle.truffle.api.TruffleFile
      StackMap stack: java.io.IOException
            astore 4 /* ex */
        start local 4 // java.io.IOException ex
         7: .line 102
            new com.oracle.truffle.llvm.nfi.SulongNFIException
            dup
            aload 4 /* ex */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial com.oracle.truffle.llvm.nfi.SulongNFIException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.io.IOException ex
        end local 3 // com.oracle.truffle.api.TruffleFile file
        end local 2 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 1 // com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor descriptor
        end local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/oracle/truffle/llvm/nfi/SulongNFI$SulongNFIBackend;
            0    8     1  descriptor  Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
            1    8     2         env  Lcom/oracle/truffle/api/TruffleLanguage$Env;
            2    8     3        file  Lcom/oracle/truffle/api/TruffleFile;
            3    6     4      source  Lcom/oracle/truffle/api/source/Source;
            4    6     5      target  Lcom/oracle/truffle/api/CallTarget;
            7    8     4          ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     5       6  Class java.io.IOException
    MethodParameters:
            Name  Flags
      descriptor  

  java.lang.Object getSimpleType(com.oracle.truffle.nfi.spi.types.NativeSimpleType);
    descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
        start local 1 // com.oracle.truffle.nfi.spi.types.NativeSimpleType type
         0: .line 108
            aload 1 /* type */
            areturn
        end local 1 // com.oracle.truffle.nfi.spi.types.NativeSimpleType type
        end local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/nfi/SulongNFI$SulongNFIBackend;
            0    1     1  type  Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    MethodParameters:
      Name  Flags
      type  

  java.lang.Object getArrayType(com.oracle.truffle.nfi.spi.types.NativeSimpleType);
    descriptor: (Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
        start local 1 // com.oracle.truffle.nfi.spi.types.NativeSimpleType type
         0: .line 113
            ldc "array types not yet implemented"
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // com.oracle.truffle.nfi.spi.types.NativeSimpleType type
        end local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/nfi/SulongNFI$SulongNFIBackend;
            0    1     1  type  Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    MethodParameters:
      Name  Flags
      type  

  java.lang.Object getEnvType();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
         0: .line 118
            ldc "env type not yet implemented"
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/nfi/SulongNFI$SulongNFIBackend;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()

  java.lang.Object createSignatureBuilder();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
         0: .line 123
            getstatic com.oracle.truffle.llvm.nfi.SulongNFISignature.BUILDER:Lcom/oracle/truffle/llvm/nfi/SulongNFISignature$SignatureBuilder;
            areturn
        end local 0 // com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/nfi/SulongNFI$SulongNFIBackend;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
}
SourceFile: "SulongNFI.java"
NestHost: com.oracle.truffle.llvm.nfi.SulongNFI
InnerClasses:
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public SourceBuilder = com.oracle.truffle.api.source.Source$SourceBuilder of com.oracle.truffle.api.source.Source
  final SulongNFIBackend = com.oracle.truffle.llvm.nfi.SulongNFI$SulongNFIBackend of com.oracle.truffle.llvm.nfi.SulongNFI
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportLibrary(value = Lcom/oracle/truffle/nfi/spi/NFIBackendLibrary;)