abstract class com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode extends com.oracle.truffle.llvm.runtime.NativeContextExtension$WellKnownNativeFunctionNode
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode
  super_class: com.oracle.truffle.llvm.runtime.NativeContextExtension$WellKnownNativeFunctionNode
{
  private final com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction function;
    descriptor: Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.llvm.runtime.ContextExtension$Key<com.oracle.truffle.llvm.runtime.NativeContextExtension> ctxExtKey;
    descriptor: Lcom/oracle/truffle/llvm/runtime/ContextExtension$Key;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/oracle/truffle/llvm/runtime/ContextExtension$Key<Lcom/oracle/truffle/llvm/runtime/NativeContextExtension;>;

  void <init>(com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction);
    descriptor: (Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
        start local 1 // com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction function
         0: .line 53
            aload 0 /* this */
            invokespecial com.oracle.truffle.llvm.runtime.NativeContextExtension$WellKnownNativeFunctionNode.<init>:()V
         1: .line 54
            aload 0 /* this */
            aload 1 /* function */
            putfield com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode.function:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
         2: .line 55
            aload 0 /* this */
            invokestatic com.oracle.truffle.llvm.runtime.LLVMLanguage.getLanguage:()Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;
            ldc Lcom/oracle/truffle/llvm/runtime/NativeContextExtension;
            invokevirtual com.oracle.truffle.llvm.runtime.LLVMLanguage.lookupContextExtension:(Ljava/lang/Class;)Lcom/oracle/truffle/llvm/runtime/ContextExtension$Key;
            putfield com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode.ctxExtKey:Lcom/oracle/truffle/llvm/runtime/ContextExtension$Key;
         3: .line 56
            return
        end local 1 // com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction function
        end local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/llvm/nativemode/runtime/WellKnownNFIFunctionNode;
            0    4     1  function  Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
    MethodParameters:
          Name  Flags
      function  

   getFunction(com.oracle.truffle.api.TruffleLanguage$ContextReference<com.oracle.truffle.llvm.runtime.LLVMContext>);
    descriptor: (Lcom/oracle/truffle/api/TruffleLanguage$ContextReference;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
        start local 1 // com.oracle.truffle.api.TruffleLanguage$ContextReference ctx
         0: .line 59
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode.ctxExtKey:Lcom/oracle/truffle/llvm/runtime/ContextExtension$Key;
            aload 1 /* ctx */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$ContextReference.get:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.runtime.LLVMContext
            invokevirtual com.oracle.truffle.llvm.runtime.ContextExtension$Key.get:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;)Lcom/oracle/truffle/llvm/runtime/ContextExtension;
            checkcast com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
            astore 2 /* ctxExt */
        start local 2 // com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension ctxExt
         1: .line 60
            aload 2 /* ctxExt */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode.function:Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;
            invokevirtual com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension.getCachedWellKnownFunction:(Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension$WellKnownFunction;)Ljava/lang/Object;
            areturn
        end local 2 // com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension ctxExt
        end local 1 // com.oracle.truffle.api.TruffleLanguage$ContextReference ctx
        end local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/llvm/nativemode/runtime/WellKnownNFIFunctionNode;
            0    2     1     ctx  Lcom/oracle/truffle/api/TruffleLanguage$ContextReference<Lcom/oracle/truffle/llvm/runtime/LLVMContext;>;
            1    2     2  ctxExt  Lcom/oracle/truffle/llvm/nativemode/runtime/NFIContextExtension;
    Signature: (Lcom/oracle/truffle/api/TruffleLanguage$ContextReference<Lcom/oracle/truffle/llvm/runtime/LLVMContext;>;)Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      ctx   

   doCached([], com.oracle.truffle.api.TruffleLanguage$ContextReference<com.oracle.truffle.llvm.runtime.LLVMContext>, , com.oracle.truffle.api.interop.InteropLibrary);
    descriptor: ([Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage$ContextReference;Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
        start local 1 // java.lang.Object[] args
        start local 2 // com.oracle.truffle.api.TruffleLanguage$ContextReference ctx
        start local 3 // java.lang.Object cachedFunction
        start local 4 // com.oracle.truffle.api.interop.InteropLibrary interop
         0: .line 68
            aload 4 /* interop */
            aload 3 /* cachedFunction */
            aload 1 /* args */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 4 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 3 // java.lang.Object cachedFunction
        end local 2 // com.oracle.truffle.api.TruffleLanguage$ContextReference ctx
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/oracle/truffle/llvm/nativemode/runtime/WellKnownNFIFunctionNode;
            0    1     1            args  [Ljava/lang/Object;
            0    1     2             ctx  Lcom/oracle/truffle/api/TruffleLanguage$ContextReference<Lcom/oracle/truffle/llvm/runtime/LLVMContext;>;
            0    1     3  cachedFunction  Ljava/lang/Object;
            0    1     4         interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedMessageException, com.oracle.truffle.api.interop.UnsupportedTypeException
    Signature: ([Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage$ContextReference<Lcom/oracle/truffle/llvm/runtime/LLVMContext;>;Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(assumptions = {"singleContextAssumption()"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.CachedContext(value = Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;)
      2:
        com.oracle.truffle.api.dsl.Cached(value = "getFunction(ctx)")
      3:
        com.oracle.truffle.api.library.CachedLibrary(value = "cachedFunction")
    MethodParameters:
                Name  Flags
      args            
      ctx             
      cachedFunction  
      interop         

   doGeneric([], com.oracle.truffle.api.TruffleLanguage$ContextReference<com.oracle.truffle.llvm.runtime.LLVMContext>, com.oracle.truffle.api.interop.InteropLibrary);
    descriptor: ([Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage$ContextReference;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
        start local 1 // java.lang.Object[] args
        start local 2 // com.oracle.truffle.api.TruffleLanguage$ContextReference ctx
        start local 3 // com.oracle.truffle.api.interop.InteropLibrary interop
         0: .line 75
            aload 0 /* this */
            aload 2 /* ctx */
            invokevirtual com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode.getFunction:(Lcom/oracle/truffle/api/TruffleLanguage$ContextReference;)Ljava/lang/Object;
            astore 4 /* fn */
        start local 4 // java.lang.Object fn
         1: .line 76
            aload 3 /* interop */
            aload 4 /* fn */
            aload 1 /* args */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.execute:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.Object fn
        end local 3 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 2 // com.oracle.truffle.api.TruffleLanguage$ContextReference ctx
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.llvm.nativemode.runtime.WellKnownNFIFunctionNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/oracle/truffle/llvm/nativemode/runtime/WellKnownNFIFunctionNode;
            0    2     1     args  [Ljava/lang/Object;
            0    2     2      ctx  Lcom/oracle/truffle/api/TruffleLanguage$ContextReference<Lcom/oracle/truffle/llvm/runtime/LLVMContext;>;
            0    2     3  interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            1    2     4       fn  Ljava/lang/Object;
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedMessageException, com.oracle.truffle.api.interop.UnsupportedTypeException
    Signature: ([Ljava/lang/Object;Lcom/oracle/truffle/api/TruffleLanguage$ContextReference<Lcom/oracle/truffle/llvm/runtime/LLVMContext;>;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"doCached"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.CachedContext(value = Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;)
      2:
        com.oracle.truffle.api.library.CachedLibrary(limit = "3")
    MethodParameters:
         Name  Flags
      args     
      ctx      
      interop  
}
SourceFile: "WellKnownNFIFunctionNode.java"
InnerClasses:
  public abstract ContextReference = com.oracle.truffle.api.TruffleLanguage$ContextReference of com.oracle.truffle.api.TruffleLanguage
  final WellKnownFunction = com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension$WellKnownFunction of com.oracle.truffle.llvm.nativemode.runtime.NFIContextExtension
  public abstract Key = com.oracle.truffle.llvm.runtime.ContextExtension$Key of com.oracle.truffle.llvm.runtime.ContextExtension
  public abstract WellKnownNativeFunctionNode = com.oracle.truffle.llvm.runtime.NativeContextExtension$WellKnownNativeFunctionNode of com.oracle.truffle.llvm.runtime.NativeContextExtension