public class com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode extends com.oracle.truffle.api.instrumentation.ExecutionEventNode
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode
  super_class: com.oracle.truffle.api.instrumentation.ExecutionEventNode
{
  final com.oracle.truffle.api.instrumentation.EventContext c;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventContext;
    flags: (0x0010) ACC_FINAL

  final com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this$0;
    descriptor: Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest, com.oracle.truffle.api.instrumentation.EventContext);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;Lcom/oracle/truffle/api/instrumentation/EventContext;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
        start local 2 // com.oracle.truffle.api.instrumentation.EventContext context
         0: .line 76
            aload 0 /* this */
            aload 1
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.this$0:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.ExecutionEventNode.<init>:()V
         1: .line 77
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 78
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest com.oracle.truffle.api.instrumentation.EventContext int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* i */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputContext:(I)Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         4: .line 77
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputCount:()I
            if_icmplt 3
        end local 3 // int i
         6: .line 80
            aload 0 /* this */
            aload 2 /* context */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.c:Lcom/oracle/truffle/api/instrumentation/EventContext;
         7: .line 81
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$CollectEventsNode;
            0    8     2  context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            2    6     3        i  I
    MethodParameters:
         Name  Flags
      this$0   final
      context  

  protected void onInputValue(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventContext, int, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventContext;ILjava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=12, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // com.oracle.truffle.api.instrumentation.EventContext inputContext
        start local 3 // int inputIndex
        start local 4 // java.lang.Object inputValue
         0: .line 85
            aload 0 /* this */
            aload 1 /* frame */
            iload 3 /* inputIndex */
            aload 4 /* inputValue */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.saveInputValue:(Lcom/oracle/truffle/api/frame/VirtualFrame;ILjava/lang/Object;)V
         1: .line 87
            iload 3 /* inputIndex */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputCount:()I
            if_icmpge 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: invokestatic org.junit.Assert.assertTrue:(Z)V
         4: .line 88
            aload 2 /* inputContext */
            aload 0 /* this */
            iload 3 /* inputIndex */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputContext:(I)Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 90
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.this$0:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event
            dup
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind.INPUT_VALUE:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.c:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aconst_null
            aconst_null
            iload 3 /* inputIndex */
            aload 4 /* inputValue */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.createInputContexts:()[Lcom/oracle/truffle/api/instrumentation/EventContext;
            aconst_null
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;[Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;[Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 91
            return
        end local 4 // java.lang.Object inputValue
        end local 3 // int inputIndex
        end local 2 // com.oracle.truffle.api.instrumentation.EventContext inputContext
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$CollectEventsNode;
            0    7     1         frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    7     2  inputContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    7     3    inputIndex  I
            0    7     4    inputValue  Ljava/lang/Object;
    MethodParameters:
              Name  Flags
      frame         
      inputContext  
      inputIndex    
      inputValue    

  protected java.lang.Object onUnwind(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=12, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Object info
         0: .line 95
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.this$0:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event
            dup
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind.UNWIND:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.c:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aconst_null
            aconst_null
            iconst_m1
            aconst_null
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.createInputContexts:()[Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 2 /* info */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;[Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;[Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 96
            aload 0 /* this */
            aload 1 /* frame */
            aload 2 /* info */
            invokespecial com.oracle.truffle.api.instrumentation.ExecutionEventNode.onUnwind:(Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object info
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$CollectEventsNode;
            0    2     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    2     2   info  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      frame  
      info   

  public void onEnter(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=12, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 102
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.this$0:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event
            dup
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind.ENTER:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.c:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            invokeinterface com.oracle.truffle.api.frame.VirtualFrame.materialize:()Lcom/oracle/truffle/api/frame/MaterializedFrame;
            aconst_null
            aconst_null
            iconst_m1
            aconst_null
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.createInputContexts:()[Lcom/oracle/truffle/api/instrumentation/EventContext;
            aconst_null
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;[Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;[Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 103
            return
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$CollectEventsNode;
            0    2     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
    MethodParameters:
       Name  Flags
      frame  

  protected void onReturnValue(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=12, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Object result
         0: .line 107
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.this$0:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event
            dup
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind.RETURN_VALUE:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.c:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getSavedInputValues:(Lcom/oracle/truffle/api/frame/VirtualFrame;)[Ljava/lang/Object;
            aload 2 /* result */
            iconst_m1
            aconst_null
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.createInputContexts:()[Lcom/oracle/truffle/api/instrumentation/EventContext;
            aconst_null
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;[Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;[Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 108
            return
        end local 2 // java.lang.Object result
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$CollectEventsNode;
            0    2     1   frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    2     2  result  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      frame   
      result  

  private com.oracle.truffle.api.instrumentation.EventContext[] createInputContexts();
    descriptor: ()[Lcom/oracle/truffle/api/instrumentation/EventContext;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
         0: .line 111
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputCount:()I
            anewarray com.oracle.truffle.api.instrumentation.EventContext
            astore 1 /* inputContexts */
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext[] inputContexts
         1: .line 112
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 113
      StackMap locals: com.oracle.truffle.api.instrumentation.EventContext[] int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* i */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputContext:(I)Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         4: .line 114
            aload 1 /* inputContexts */
            iload 2 /* i */
            aload 0 /* this */
            iload 2 /* i */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputContext:(I)Lcom/oracle/truffle/api/instrumentation/EventContext;
            aastore
         5: .line 112
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode.getInputCount:()I
            if_icmplt 3
        end local 2 // int i
         7: .line 116
            aload 1 /* inputContexts */
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext[] inputContexts
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$CollectEventsNode;
            1    8     1  inputContexts  [Lcom/oracle/truffle/api/instrumentation/EventContext;
            2    7     2              i  I
}
SourceFile: "InstrumentationEventTest.java"
NestHost: com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
InnerClasses:
  protected CollectEventsNode = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  protected Event = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  final EventKind = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest