public class com.oracle.truffle.js.nodes.access.IteratorCloseNode extends com.oracle.truffle.js.nodes.JavaScriptBaseNode
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.nodes.access.IteratorCloseNode
  super_class: com.oracle.truffle.js.nodes.JavaScriptBaseNode
{
  private com.oracle.truffle.js.nodes.access.GetMethodNode getReturnNode;
    descriptor: Lcom/oracle/truffle/js/nodes/access/GetMethodNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

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

  private com.oracle.truffle.js.nodes.access.IsJSObjectNode isObjectNode;
    descriptor: Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.JavaScriptNode iteratorNode;
    descriptor: Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  protected void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.JavaScriptNode);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.JavaScriptNode iteratorNode
         0: .line 63
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
         1: .line 64
            aload 0 /* this */
            aload 1 /* context */
            aconst_null
            ldc "return"
            invokestatic com.oracle.truffle.js.nodes.access.GetMethodNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;Ljava/lang/Object;)Lcom/oracle/truffle/js/nodes/access/GetMethodNode;
            putfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.getReturnNode:Lcom/oracle/truffle/js/nodes/access/GetMethodNode;
         2: .line 65
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.function.JSFunctionCallNode.createCall:()Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode;
            putfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.methodCallNode:Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode;
         3: .line 66
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.access.IsJSObjectNode.create:()Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;
            putfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.isObjectNode:Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;
         4: .line 67
            aload 0 /* this */
            aload 2 /* iteratorNode */
            putfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.iteratorNode:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
         5: .line 68
            return
        end local 2 // com.oracle.truffle.js.nodes.JavaScriptNode iteratorNode
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/oracle/truffle/js/nodes/access/IteratorCloseNode;
            0    6     1       context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    6     2  iteratorNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
              Name  Flags
      context       
      iteratorNode  

  public static com.oracle.truffle.js.nodes.access.IteratorCloseNode create(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/IteratorCloseNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 71
            new com.oracle.truffle.js.nodes.access.IteratorCloseNode
            dup
            aload 0 /* context */
            aconst_null
            invokespecial com.oracle.truffle.js.nodes.access.IteratorCloseNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  public static com.oracle.truffle.js.nodes.access.IteratorCloseNode create(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.JavaScriptNode);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/access/IteratorCloseNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.js.nodes.JavaScriptNode iteratorNode
         0: .line 75
            new com.oracle.truffle.js.nodes.access.IteratorCloseNode
            dup
            aload 0 /* context */
            aload 1 /* iteratorNode */
            invokespecial com.oracle.truffle.js.nodes.access.IteratorCloseNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
            areturn
        end local 1 // com.oracle.truffle.js.nodes.JavaScriptNode iteratorNode
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0       context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    1     1  iteratorNode  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
              Name  Flags
      context       
      iteratorNode  

  public final void executeVoid(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject iterator
         0: .line 79
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.getReturnNode:Lcom/oracle/truffle/js/nodes/access/GetMethodNode;
            aload 1 /* iterator */
            invokevirtual com.oracle.truffle.js.nodes.access.GetMethodNode.executeWithTarget:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* returnMethod */
        start local 2 // java.lang.Object returnMethod
         1: .line 80
            aload 2 /* returnMethod */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 5
         2: .line 81
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.methodCallNode:Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode;
            aload 1 /* iterator */
            aload 2 /* returnMethod */
            invokestatic com.oracle.truffle.js.runtime.JSArguments.createZeroArg:(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
            invokevirtual com.oracle.truffle.js.nodes.function.JSFunctionCallNode.executeCall:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* innerResult */
        start local 3 // java.lang.Object innerResult
         3: .line 82
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.isObjectNode:Lcom/oracle/truffle/js/nodes/access/IsJSObjectNode;
            aload 3 /* innerResult */
            invokevirtual com.oracle.truffle.js.nodes.access.IsJSObjectNode.executeBoolean:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 83
            aload 3 /* innerResult */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorIterResultNotAnObject:(Ljava/lang/Object;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 3 // java.lang.Object innerResult
         5: .line 86
      StackMap locals: java.lang.Object
      StackMap stack:
            return
        end local 2 // java.lang.Object returnMethod
        end local 1 // com.oracle.truffle.api.object.DynamicObject iterator
        end local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/oracle/truffle/js/nodes/access/IteratorCloseNode;
            0    6     1      iterator  Lcom/oracle/truffle/api/object/DynamicObject;
            1    6     2  returnMethod  Ljava/lang/Object;
            3    5     3   innerResult  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      iterator  

  public final java.lang.Object execute(com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject iterator
        start local 2 // java.lang.Object value
         0: .line 89
            aload 0 /* this */
            aload 1 /* iterator */
            invokevirtual com.oracle.truffle.js.nodes.access.IteratorCloseNode.executeVoid:(Lcom/oracle/truffle/api/object/DynamicObject;)V
         1: .line 90
            aload 2 /* value */
            areturn
        end local 2 // java.lang.Object value
        end local 1 // com.oracle.truffle.api.object.DynamicObject iterator
        end local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/oracle/truffle/js/nodes/access/IteratorCloseNode;
            0    2     1  iterator  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     2     value  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      iterator  
      value     

  public final void executeAbrupt(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject iterator
         0: .line 95
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.getReturnNode:Lcom/oracle/truffle/js/nodes/access/GetMethodNode;
            aload 1 /* iterator */
            invokevirtual com.oracle.truffle.js.nodes.access.GetMethodNode.executeWithTarget:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* returnMethod */
        start local 2 // java.lang.Object returnMethod
         1: .line 96
            aload 2 /* returnMethod */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 5
         2: .line 97
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.access.IteratorCloseNode.methodCallNode:Lcom/oracle/truffle/js/nodes/function/JSFunctionCallNode;
            aload 1 /* iterator */
            aload 2 /* returnMethod */
            invokestatic com.oracle.truffle.js.runtime.JSArguments.createZeroArg:(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
            invokevirtual com.oracle.truffle.js.nodes.function.JSFunctionCallNode.executeCall:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.lang.Object returnMethod
         3: .line 99
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Exception
         4: pop
         5: .line 102
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.object.DynamicObject iterator
        end local 0 // com.oracle.truffle.js.nodes.access.IteratorCloseNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/oracle/truffle/js/nodes/access/IteratorCloseNode;
            0    6     1      iterator  Lcom/oracle/truffle/api/object/DynamicObject;
            1    3     2  returnMethod  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception
    MethodParameters:
          Name  Flags
      iterator  
}
SourceFile: "IteratorCloseNode.java"
InnerClasses:
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node