abstract class com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode extends com.oracle.truffle.api.nodes.Node
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode
  super_class: com.oracle.truffle.api.nodes.Node
{
  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String signature
         0: .line 72
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.nodes.Node.<init>:()V
         1: .line 73
            aload 0 /* this */
            aload 1 /* name */
            putfield com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode.name:Ljava/lang/String;
         2: .line 74
            aload 0 /* this */
            aload 2 /* signature */
            putfield com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode.signature:Ljava/lang/String;
         3: .line 75
            return
        end local 2 // java.lang.String signature
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/oracle/truffle/nfi/NFIRootNode$LookupAndBindNode;
            0    4     1       name  Ljava/lang/String;
            0    4     2  signature  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      name       
      signature  

  abstract java.lang.Object execute(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      library  

  java.lang.Object doLookupAndBind(java.lang.Object, com.oracle.truffle.api.interop.InteropLibrary, com.oracle.truffle.api.interop.InteropLibrary);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode this
        start local 1 // java.lang.Object library
        start local 2 // com.oracle.truffle.api.interop.InteropLibrary libInterop
        start local 3 // com.oracle.truffle.api.interop.InteropLibrary symInterop
         0: .line 84
            aload 2 /* libInterop */
            aload 1 /* library */
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode.name:Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            astore 4 /* symbol */
        start local 4 // java.lang.Object symbol
         1: .line 85
            aload 3 /* symInterop */
            aload 4 /* symbol */
            ldc "bind"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode.signature:Ljava/lang/String;
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.invokeMember:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
         2: areturn
        end local 4 // java.lang.Object symbol
         3: .line 86
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.InteropException
            astore 4 /* ex */
        start local 4 // com.oracle.truffle.api.interop.InteropException ex
         4: .line 87
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
         5: .line 88
            new com.oracle.truffle.nfi.NFIPreBindException
            dup
            aload 4 /* ex */
            invokevirtual com.oracle.truffle.api.interop.InteropException.getMessage:()Ljava/lang/String;
            aload 0 /* this */
            invokespecial com.oracle.truffle.nfi.NFIPreBindException.<init>:(Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)V
            athrow
        end local 4 // com.oracle.truffle.api.interop.InteropException ex
        end local 3 // com.oracle.truffle.api.interop.InteropLibrary symInterop
        end local 2 // com.oracle.truffle.api.interop.InteropLibrary libInterop
        end local 1 // java.lang.Object library
        end local 0 // com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/oracle/truffle/nfi/NFIRootNode$LookupAndBindNode;
            0    6     1     library  Ljava/lang/Object;
            0    6     2  libInterop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            0    6     3  symInterop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            1    3     4      symbol  Ljava/lang/Object;
            4    6     4          ex  Lcom/oracle/truffle/api/interop/InteropException;
      Exception table:
        from    to  target  type
           0     2       3  Class com.oracle.truffle.api.interop.InteropException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(limit = "1")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.library.CachedLibrary(value = "library")
      2:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "symInterop")
        com.oracle.truffle.api.library.CachedLibrary(limit = "1")
    MethodParameters:
            Name  Flags
      library     
      libInterop  
      symInterop  
}
SourceFile: "NFIRootNode.java"
NestHost: com.oracle.truffle.nfi.NFIRootNode
InnerClasses:
  public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached
  abstract LookupAndBindNode = com.oracle.truffle.nfi.NFIRootNode$LookupAndBindNode of com.oracle.truffle.nfi.NFIRootNode