class com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode extends com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode
  super_class: com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode
{
  com.oracle.truffle.api.nodes.DirectCallNode callNode;
    descriptor: Lcom/oracle/truffle/api/nodes/DirectCallNode;
    flags: (0x0000) 
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode valueNode;
    descriptor: Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  void <init>(com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode);
    descriptor: (Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
        start local 1 // com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode value
         0: .line 196
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode.<init>:()V
         1: .line 197
            aload 0 /* this */
            aload 1 /* value */
            putfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.valueNode:Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
         2: .line 198
            return
        end local 1 // com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode value
        end local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/api/test/ThreadSafetyTest$RecursiveCallNode;
            0    3     1  value  Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
    MethodParameters:
       Name  Flags
      value  

  int execute(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)I
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 202
            aload 1 /* frame */
            invokeinterface com.oracle.truffle.api.frame.VirtualFrame.getArguments:()[Ljava/lang/Object;
            iconst_0
            aaload
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 2 /* arg */
        start local 2 // int arg
         1: .line 203
            iload 2 /* arg */
            ifle 3
         2: .line 204
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.callNode:Lcom/oracle/truffle/api/nodes/DirectCallNode;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 2 /* arg */
            iconst_1
            isub
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokevirtual com.oracle.truffle.api.nodes.DirectCallNode.call:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
         3: .line 206
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.valueNode:Lcom/oracle/truffle/api/test/ThreadSafetyTest$ValueNode;
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode.execute:(Lcom/oracle/truffle/api/frame/VirtualFrame;)I
            ireturn
        end local 2 // int arg
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/api/test/ThreadSafetyTest$RecursiveCallNode;
            0    4     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1    4     2    arg  I
    MethodParameters:
       Name  Flags
      frame  

  void setCallNode(com.oracle.truffle.api.nodes.DirectCallNode);
    descriptor: (Lcom/oracle/truffle/api/nodes/DirectCallNode;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
        start local 1 // com.oracle.truffle.api.nodes.DirectCallNode callNode
         0: .line 211
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* callNode */
            invokevirtual com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.nodes.DirectCallNode
            putfield com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode.callNode:Lcom/oracle/truffle/api/nodes/DirectCallNode;
         1: .line 212
            return
        end local 1 // com.oracle.truffle.api.nodes.DirectCallNode callNode
        end local 0 // com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/oracle/truffle/api/test/ThreadSafetyTest$RecursiveCallNode;
            0    2     1  callNode  Lcom/oracle/truffle/api/nodes/DirectCallNode;
    MethodParameters:
          Name  Flags
      callNode  
}
SourceFile: "ThreadSafetyTest.java"
NestHost: com.oracle.truffle.api.test.ThreadSafetyTest
InnerClasses:
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  RecursiveCallNode = com.oracle.truffle.api.test.ThreadSafetyTest$RecursiveCallNode of com.oracle.truffle.api.test.ThreadSafetyTest
  abstract ValueNode = com.oracle.truffle.api.test.ThreadSafetyTest$ValueNode of com.oracle.truffle.api.test.ThreadSafetyTest