class com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode extends com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode
  super_class: com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode
{
  private com.oracle.truffle.js.nodes.access.JSProxyCallNode proxyCall;
    descriptor: Lcom/oracle/truffle/js/nodes/access/JSProxyCallNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode next;
    descriptor: Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$AbstractCacheNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private final boolean isNew;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean isNewTarget;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode, boolean, boolean);
    descriptor: (Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$AbstractCacheNode;ZZ)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode this
        start local 1 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode next
        start local 2 // boolean isNew
        start local 3 // boolean isNewTarget
         0: .line 1633
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode.<init>:()V
         1: .line 1634
            aload 0 /* this */
            aload 1 /* next */
            putfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.next:Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$AbstractCacheNode;
         2: .line 1635
            aload 0 /* this */
            iload 2 /* isNew */
            putfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.isNew:Z
         3: .line 1636
            aload 0 /* this */
            iload 3 /* isNewTarget */
            putfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.isNewTarget:Z
         4: .line 1637
            return
        end local 3 // boolean isNewTarget
        end local 2 // boolean isNew
        end local 1 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode next
        end local 0 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$JSProxyCacheNode;
            0    5     1         next  Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$AbstractCacheNode;
            0    5     2        isNew  Z
            0    5     3  isNewTarget  Z
    MethodParameters:
             Name  Flags
      next         
      isNew        
      isNewTarget  

  public java.lang.Object executeCall(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode this
        start local 1 // java.lang.Object[] arguments
         0: .line 1641
            aload 1 /* arguments */
            invokestatic com.oracle.truffle.js.runtime.JSArguments.getFunctionObject:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* function */
        start local 2 // java.lang.Object function
         1: .line 1642
            aload 2 /* function */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.isJSProxy:(Ljava/lang/Object;)Z
            ifeq 7
         2: .line 1643
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.proxyCall:Lcom/oracle/truffle/js/nodes/access/JSProxyCallNode;
            ifnonnull 6
         3: .line 1644
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         4: .line 1645
            aload 2 /* function */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.getJSContext:(Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/js/runtime/JSContext;
            astore 3 /* context */
        start local 3 // com.oracle.truffle.js.runtime.JSContext context
         5: .line 1646
            aload 0 /* this */
            aload 0 /* this */
            aload 3 /* context */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.isNew:Z
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.isNewTarget:Z
            invokestatic com.oracle.truffle.js.nodes.access.JSProxyCallNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;ZZ)Lcom/oracle/truffle/js/nodes/access/JSProxyCallNode;
            invokevirtual com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.access.JSProxyCallNode
            putfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.proxyCall:Lcom/oracle/truffle/js/nodes/access/JSProxyCallNode;
        end local 3 // com.oracle.truffle.js.runtime.JSContext context
         6: .line 1648
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.proxyCall:Lcom/oracle/truffle/js/nodes/access/JSProxyCallNode;
            aload 1 /* arguments */
            invokevirtual com.oracle.truffle.js.nodes.access.JSProxyCallNode.execute:([Ljava/lang/Object;)Ljava/lang/Object;
            areturn
         7: .line 1650
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode.next:Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$AbstractCacheNode;
            aload 1 /* arguments */
            invokevirtual com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode.executeCall:([Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object function
        end local 1 // java.lang.Object[] arguments
        end local 0 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$JSProxyCacheNode;
            0    8     1  arguments  [Ljava/lang/Object;
            1    8     2   function  Ljava/lang/Object;
            5    6     3    context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
           Name  Flags
      arguments  

  protected boolean accept(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode this
        start local 1 // java.lang.Object function
         0: .line 1656
            aload 1 /* function */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSProxy.isJSProxy:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object function
        end local 0 // com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode$JSProxyCacheNode;
            0    1     1  function  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      function  
}
SourceFile: "JSFunctionCallNode.java"
NestHost: com.oracle.truffle.js.nodes.function.JSFunctionCallNode
InnerClasses:
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  private abstract AbstractCacheNode = com.oracle.truffle.js.nodes.function.JSFunctionCallNode$AbstractCacheNode of com.oracle.truffle.js.nodes.function.JSFunctionCallNode
  private JSProxyCacheNode = com.oracle.truffle.js.nodes.function.JSFunctionCallNode$JSProxyCacheNode of com.oracle.truffle.js.nodes.function.JSFunctionCallNode