final class com.oracle.truffle.nfi.Parser extends com.oracle.truffle.nfi.spi.types.TypeFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.nfi.Parser
  super_class: com.oracle.truffle.nfi.spi.types.TypeFactory
{
  private final com.oracle.truffle.nfi.Lexer lexer;
    descriptor: Lcom/oracle/truffle/nfi/Lexer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static com.oracle.truffle.nfi.NativeSource parseNFISource(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Lcom/oracle/truffle/nfi/NativeSource;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.CharSequence source
         0: .line 109
            new com.oracle.truffle.nfi.Parser
            dup
            aload 0 /* source */
            invokespecial com.oracle.truffle.nfi.Parser.<init>:(Ljava/lang/CharSequence;)V
            astore 1 /* parser */
        start local 1 // com.oracle.truffle.nfi.Parser parser
         1: .line 110
            aload 1 /* parser */
            invokevirtual com.oracle.truffle.nfi.Parser.parseNFISource:()Lcom/oracle/truffle/nfi/NativeSource;
            astore 2 /* ret */
        start local 2 // com.oracle.truffle.nfi.NativeSource ret
         2: .line 111
            aload 1 /* parser */
            getstatic com.oracle.truffle.nfi.Lexer$Token.EOF:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Parser.expect:(Lcom/oracle/truffle/nfi/Lexer$Token;)V
         3: .line 112
            aload 2 /* ret */
            areturn
        end local 2 // com.oracle.truffle.nfi.NativeSource ret
        end local 1 // com.oracle.truffle.nfi.Parser parser
        end local 0 // java.lang.CharSequence source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  source  Ljava/lang/CharSequence;
            1    4     1  parser  Lcom/oracle/truffle/nfi/Parser;
            2    4     2     ret  Lcom/oracle/truffle/nfi/NativeSource;
    MethodParameters:
        Name  Flags
      source  

  private void <init>(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.nfi.Parser this
        start local 1 // java.lang.CharSequence source
         0: .line 117
            aload 0 /* this */
            invokespecial com.oracle.truffle.nfi.spi.types.TypeFactory.<init>:()V
         1: .line 118
            aload 0 /* this */
            new com.oracle.truffle.nfi.Lexer
            dup
            aload 1 /* source */
            invokespecial com.oracle.truffle.nfi.Lexer.<init>:(Ljava/lang/CharSequence;)V
            putfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
         2: .line 119
            return
        end local 1 // java.lang.CharSequence source
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/truffle/nfi/Parser;
            0    3     1  source  Ljava/lang/CharSequence;
    MethodParameters:
        Name  Flags
      source  

  private void expect(com.oracle.truffle.nfi.Lexer$Token);
    descriptor: (Lcom/oracle/truffle/nfi/Lexer$Token;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.nfi.Parser this
        start local 1 // com.oracle.truffle.nfi.Lexer$Token token
         0: .line 122
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            aload 1 /* token */
            if_acmpeq 2
         1: .line 123
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "unexpected token: expected '%s', but got '%s'"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* token */
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            aastore
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
         2: .line 125
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.nfi.Lexer$Token token
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/nfi/Parser;
            0    3     1  token  Lcom/oracle/truffle/nfi/Lexer$Token;
    MethodParameters:
       Name  Flags
      token  

  private com.oracle.truffle.nfi.NativeSource parseNFISource();
    descriptor: ()Lcom/oracle/truffle/nfi/NativeSource;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 128
            aconst_null
            astore 1 /* nfiId */
        start local 1 // java.lang.String nfiId
         1: .line 129
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.peek:()Lcom/oracle/truffle/nfi/Lexer$Token;
            getstatic com.oracle.truffle.nfi.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpne 6
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.peekValue:()Ljava/lang/String;
            ldc "with"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 6
         2: .line 130
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            pop
         3: .line 131
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            getstatic com.oracle.truffle.nfi.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpeq 5
         4: .line 132
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "Expecting NFI backend identifier"
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
         5: .line 134
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            astore 1 /* nfiId */
         6: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseNFISourceContent:()Lcom/oracle/truffle/nfi/NativeSource$Content;
            astore 2 /* c */
        start local 2 // com.oracle.truffle.nfi.NativeSource$Content c
         7: .line 138
            new com.oracle.truffle.nfi.NativeSource
            dup
            aload 1 /* nfiId */
            aload 2 /* c */
            invokespecial com.oracle.truffle.nfi.NativeSource.<init>:(Ljava/lang/String;Lcom/oracle/truffle/nfi/NativeSource$Content;)V
            areturn
        end local 2 // com.oracle.truffle.nfi.NativeSource$Content c
        end local 1 // java.lang.String nfiId
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/oracle/truffle/nfi/Parser;
            1    8     1  nfiId  Ljava/lang/String;
            7    8     2      c  Lcom/oracle/truffle/nfi/NativeSource$Content;

  private com.oracle.truffle.nfi.NativeSource$Content parseNFISourceContent();
    descriptor: ()Lcom/oracle/truffle/nfi/NativeSource$Content;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 142
            invokestatic com.oracle.truffle.nfi.Parser.$SWITCH_TABLE$com$oracle$truffle$nfi$Lexer$Token:()[I
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.peek:()Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            iaload
            lookupswitch { // 2
                    1: 16
                   12: 1
              default: 18
          }
         1: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseLibraryDescriptor:()Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
            astore 1 /* descriptor */
        start local 1 // com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor descriptor
         2: .line 145
            new com.oracle.truffle.nfi.NativeSource$ParsedLibrary
            dup
            aload 1 /* descriptor */
            invokespecial com.oracle.truffle.nfi.NativeSource$ParsedLibrary.<init>:(Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;)V
            astore 2 /* ret */
        start local 2 // com.oracle.truffle.nfi.NativeSource$ParsedLibrary ret
         3: .line 146
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            getstatic com.oracle.truffle.nfi.Lexer$Token.OPENBRACE:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpne 15
         4: .line 148
      StackMap locals: com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor com.oracle.truffle.nfi.NativeSource$ParsedLibrary
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            astore 3 /* closeOrId */
        start local 3 // com.oracle.truffle.nfi.Lexer$Token closeOrId
         5: .line 149
            aload 3 /* closeOrId */
            getstatic com.oracle.truffle.nfi.Lexer$Token.CLOSEBRACE:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpne 7
         6: .line 150
            goto 15
         7: .line 152
      StackMap locals: com.oracle.truffle.nfi.Lexer$Token
      StackMap stack:
            aload 3 /* closeOrId */
            getstatic com.oracle.truffle.nfi.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpeq 9
         8: .line 153
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "Expecting identifier in library body"
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
         9: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            astore 4 /* ident */
        start local 4 // java.lang.String ident
        10: .line 157
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.mark:()V
        11: .line 158
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseSignature:()Lcom/oracle/truffle/nfi/SignatureRootNode$BuildSignatureNode;
            pop
        12: .line 159
            aload 2 /* ret */
            aload 4 /* ident */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.markedValue:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.nfi.NativeSource$ParsedLibrary.register:(Ljava/lang/String;Ljava/lang/String;)V
        13: .line 161
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            getstatic com.oracle.truffle.nfi.Lexer$Token.SEMICOLON:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpeq 4
        14: .line 162
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "Expecting semicolon"
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
        end local 4 // java.lang.String ident
        end local 3 // com.oracle.truffle.nfi.Lexer$Token closeOrId
        15: .line 166
      StackMap locals:
      StackMap stack:
            aload 2 /* ret */
            areturn
        end local 2 // com.oracle.truffle.nfi.NativeSource$ParsedLibrary ret
        end local 1 // com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor descriptor
        16: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseSignature:()Lcom/oracle/truffle/nfi/SignatureRootNode$BuildSignatureNode;
            astore 1 /* buildSig */
        start local 1 // com.oracle.truffle.nfi.SignatureRootNode$BuildSignatureNode buildSig
        17: .line 171
            new com.oracle.truffle.nfi.NativeSource$ParsedSignature
            dup
            aload 1 /* buildSig */
            invokespecial com.oracle.truffle.nfi.NativeSource$ParsedSignature.<init>:(Lcom/oracle/truffle/nfi/SignatureRootNode$BuildSignatureNode;)V
            areturn
        end local 1 // com.oracle.truffle.nfi.SignatureRootNode$BuildSignatureNode buildSig
        18: .line 175
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            pop
        19: .line 176
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "Expecting identifier or '('"
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0        this  Lcom/oracle/truffle/nfi/Parser;
            2   16     1  descriptor  Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
            3   16     2         ret  Lcom/oracle/truffle/nfi/NativeSource$ParsedLibrary;
            5   15     3   closeOrId  Lcom/oracle/truffle/nfi/Lexer$Token;
           10   15     4       ident  Ljava/lang/String;
           17   18     1    buildSig  Lcom/oracle/truffle/nfi/SignatureRootNode$BuildSignatureNode;

  private com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor parseLibraryDescriptor();
    descriptor: ()Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 181
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            astore 1 /* token */
        start local 1 // com.oracle.truffle.nfi.Lexer$Token token
         1: .line 182
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            astore 2 /* keyword */
        start local 2 // java.lang.String keyword
         2: .line 183
            aload 1 /* token */
            getstatic com.oracle.truffle.nfi.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpne 8
         3: .line 184
            aload 2 /* keyword */
            dup
            astore 3
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
              3327206: 4
           1544803905: 5
              default: 8
          }
      StackMap locals: com.oracle.truffle.nfi.Lexer$Token java.lang.String java.lang.String
      StackMap stack:
         4: aload 3
            ldc "load"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 8
      StackMap locals:
      StackMap stack:
         5: aload 3
            ldc "default"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 8
         6: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseLoadLibrary:()Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
            areturn
         7: .line 188
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.nfi.Parser.createDefaultLibrary:()Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
            areturn
         8: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "expected 'load' or 'default', but got '%s'"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* keyword */
            aastore
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
        end local 2 // java.lang.String keyword
        end local 1 // com.oracle.truffle.nfi.Lexer$Token token
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lcom/oracle/truffle/nfi/Parser;
            1    9     1    token  Lcom/oracle/truffle/nfi/Lexer$Token;
            2    9     2  keyword  Ljava/lang/String;

  private java.lang.String parseIdentOrString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 195
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.peek:()Lcom/oracle/truffle/nfi/Lexer$Token;
            getstatic com.oracle.truffle.nfi.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpne 3
         1: .line 197
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            pop
         2: .line 198
            goto 4
         3: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.nfi.Lexer$Token.STRING:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Parser.expect:(Lcom/oracle/truffle/nfi/Lexer$Token;)V
         4: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/nfi/Parser;

  private com.oracle.truffle.nfi.spi.types.NativeLibraryDescriptor parseLoadLibrary();
    descriptor: ()Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 205
            aconst_null
            astore 1 /* flags */
        start local 1 // java.util.List flags
         1: .line 206
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.peek:()Lcom/oracle/truffle/nfi/Lexer$Token;
            getstatic com.oracle.truffle.nfi.Lexer$Token.OPENPAREN:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpne 3
         2: .line 207
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseFlags:()Ljava/util/List;
            astore 1 /* flags */
         3: .line 210
      StackMap locals: java.util.List
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.nfi.Parser.parseIdentOrString:()Ljava/lang/String;
            astore 2 /* filename */
        start local 2 // java.lang.String filename
         4: .line 211
            aload 2 /* filename */
            aload 1 /* flags */
            invokestatic com.oracle.truffle.nfi.Parser.createLibraryDescriptor:(Ljava/lang/String;Ljava/util/List;)Lcom/oracle/truffle/nfi/spi/types/NativeLibraryDescriptor;
            areturn
        end local 2 // java.lang.String filename
        end local 1 // java.util.List flags
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/oracle/truffle/nfi/Parser;
            1    5     1     flags  Ljava/util/List<Ljava/lang/String;>;
            4    5     2  filename  Ljava/lang/String;

  private java.util.List<java.lang.String> parseFlags();
    descriptor: ()Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 215
            aload 0 /* this */
            getstatic com.oracle.truffle.nfi.Lexer$Token.OPENPAREN:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Parser.expect:(Lcom/oracle/truffle/nfi/Lexer$Token;)V
         1: .line 217
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* flags */
        start local 1 // java.util.ArrayList flags
         2: .line 221
      StackMap locals: java.util.ArrayList
      StackMap stack:
            aload 0 /* this */
            getstatic com.oracle.truffle.nfi.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Parser.expect:(Lcom/oracle/truffle/nfi/Lexer$Token;)V
         3: .line 222
            aload 1 /* flags */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         4: .line 223
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.next:()Lcom/oracle/truffle/nfi/Lexer$Token;
            astore 2 /* nextToken */
        start local 2 // com.oracle.truffle.nfi.Lexer$Token nextToken
         5: .line 224
            aload 2 /* nextToken */
            getstatic com.oracle.truffle.nfi.Lexer$Token.OR:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpeq 2
         6: .line 226
            aload 2 /* nextToken */
            getstatic com.oracle.truffle.nfi.Lexer$Token.CLOSEPAREN:Lcom/oracle/truffle/nfi/Lexer$Token;
            if_acmpeq 8
         7: .line 227
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "unexpected token: expected '|' or ')', but got '%s'"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            invokevirtual com.oracle.truffle.nfi.Lexer.currentValue:()Ljava/lang/String;
            aastore
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
         8: .line 230
      StackMap locals: com.oracle.truffle.nfi.Lexer$Token
      StackMap stack:
            aload 1 /* flags */
            areturn
        end local 2 // com.oracle.truffle.nfi.Lexer$Token nextToken
        end local 1 // java.util.ArrayList flags
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lcom/oracle/truffle/nfi/Parser;
            2    9     1      flags  Ljava/util/ArrayList<Ljava/lang/String;>;
            5    9     2  nextToken  Lcom/oracle/truffle/nfi/Lexer$Token;
    Signature: ()Ljava/util/List<Ljava/lang/String;>;

  private com.oracle.truffle.nfi.SignatureRootNode$GetTypeNode parseType();
    descriptor: ()Lcom/oracle/truffle/nfi/SignatureRootNode$GetTypeNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 237
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tGetSignatureTypeNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/nfi/Parser;

  private com.oracle.truffle.nfi.SignatureRootNode$BuildSignatureNode parseSignature();
    descriptor: ()Lcom/oracle/truffle/nfi/SignatureRootNode$BuildSignatureNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 260
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tMakeVarargsNodeGen cannot be resolved\n\tAddArgumentNodeGen cannot be resolved\n\tSetRetTypeNodeGen cannot be resolved\n\tBuildSignatureNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/nfi/Parser;

  private com.oracle.truffle.nfi.SignatureRootNode$GetTypeNode parseArrayType();
    descriptor: ()Lcom/oracle/truffle/nfi/SignatureRootNode$GetTypeNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 287
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tGetArrayTypeNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/nfi/Parser;

  private com.oracle.truffle.nfi.SignatureRootNode$GetTypeNode parseSimpleType(boolean);
    descriptor: (Z)Lcom/oracle/truffle/nfi/SignatureRootNode$GetTypeNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.nfi.Parser this
         0: .line 294
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tGetEnvTypeNodeGen cannot be resolved\n\tGetSimpleTypeNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/nfi/Parser;
    MethodParameters:
            Name  Flags
      envAllowed  

  private com.oracle.truffle.nfi.spi.types.NativeSimpleType getSimpleType(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.nfi.Parser this
        start local 1 // java.lang.String identifier
         0: .line 302
            aload 1 /* identifier */
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokestatic com.oracle.truffle.nfi.spi.types.NativeSimpleType.valueOf:(Ljava/lang/String;)Lcom/oracle/truffle/nfi/spi/types/NativeSimpleType;
         1: areturn
         2: .line 303
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            pop
         3: .line 304
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.Parser.lexer:Lcom/oracle/truffle/nfi/Lexer;
            ldc "unknown simple type '%s'"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* identifier */
            aastore
            invokevirtual com.oracle.truffle.nfi.Lexer.fail:(Ljava/lang/String;[Ljava/lang/Object;)Lcom/oracle/truffle/nfi/NFIParserException;
            athrow
        end local 1 // java.lang.String identifier
        end local 0 // com.oracle.truffle.nfi.Parser this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/oracle/truffle/nfi/Parser;
            0    4     1  identifier  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.IllegalArgumentException
    MethodParameters:
            Name  Flags
      identifier  

  static int[] $SWITCH_TABLE$com$oracle$truffle$nfi$Lexer$Token();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 106
            getstatic com.oracle.truffle.nfi.Parser.$SWITCH_TABLE$com$oracle$truffle$nfi$Lexer$Token:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic com.oracle.truffle.nfi.Lexer$Token.values:()[Lcom/oracle/truffle/nfi/Lexer$Token;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic com.oracle.truffle.nfi.Lexer$Token.CLOSEBRACE:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 6
            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.Lexer$Token.CLOSEBRACKET:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            iconst_4
            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.Lexer$Token.CLOSEPAREN:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            iconst_2
            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.Lexer$Token.COLON:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 8
            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.Lexer$Token.COMMA:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 9
            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.Lexer$Token.ELLIPSIS:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 11
            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.Lexer$Token.EOF:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 15
            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.Lexer$Token.IDENTIFIER:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 12
            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.Lexer$Token.INVALID:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 14
            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.Lexer$Token.OPENBRACE:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            iconst_5
            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.Lexer$Token.OPENBRACKET:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            iconst_3
            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.Lexer$Token.OPENPAREN:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            iconst_1
            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.Lexer$Token.OR:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 10
            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.Lexer$Token.SEMICOLON:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 7
            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.Lexer$Token.STRING:Lcom/oracle/truffle/nfi/Lexer$Token;
            invokevirtual com.oracle.truffle.nfi.Lexer$Token.ordinal:()I
            bipush 13
            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.Parser.$SWITCH_TABLE$com$oracle$truffle$nfi$Lexer$Token:[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: "Parser.java"
InnerClasses:
  public final Token = com.oracle.truffle.nfi.Lexer$Token of com.oracle.truffle.nfi.Lexer
  abstract Content = com.oracle.truffle.nfi.NativeSource$Content of com.oracle.truffle.nfi.NativeSource
  final ParsedLibrary = com.oracle.truffle.nfi.NativeSource$ParsedLibrary of com.oracle.truffle.nfi.NativeSource
  final ParsedSignature = com.oracle.truffle.nfi.NativeSource$ParsedSignature of com.oracle.truffle.nfi.NativeSource
  abstract BuildSignatureNode = com.oracle.truffle.nfi.SignatureRootNode$BuildSignatureNode of com.oracle.truffle.nfi.SignatureRootNode
  abstract GetTypeNode = com.oracle.truffle.nfi.SignatureRootNode$GetTypeNode of com.oracle.truffle.nfi.SignatureRootNode