public class com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener implements com.oracle.truffle.api.instrumentation.ExecutionEventListener
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener
  super_class: java.lang.Object
{
  private volatile boolean error;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.lang.String waiting;
    descriptor: Ljava/lang/String;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private boolean stepping;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  private final java.lang.StringBuilder sb;
    descriptor: Ljava/lang/StringBuilder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object sync;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.List<com.oracle.truffle.api.nodes.Node> enteredNodes;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/oracle/truffle/api/nodes/Node;>;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 379
            aload 0 /* this */
            iconst_0
            iconst_0
            invokespecial com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.<init>:(ZZ)V
         1: .line 380
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;

  public void <init>(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // boolean stepping
         0: .line 383
            aload 0 /* this */
            iload 1 /* stepping */
            iconst_0
            invokespecial com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.<init>:(ZZ)V
         1: .line 384
            return
        end local 1 // boolean stepping
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0    2     1  stepping  Z
    MethodParameters:
          Name  Flags
      stepping  

  public void <init>(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // boolean stepping
        start local 2 // boolean recordEnteredNodes
         0: .line 386
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 371
            aload 0 /* this */
            ldc ""
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
         2: .line 374
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sb:Ljava/lang/StringBuilder;
         3: .line 375
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
         4: .line 376
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.enteredNodes:Ljava/util/List;
         5: .line 387
            aload 0 /* this */
            iload 1 /* stepping */
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.stepping:Z
         6: .line 388
            aload 0 /* this */
            iload 2 /* recordEnteredNodes */
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.recordEnteredNodes:Z
         7: .line 389
            return
        end local 2 // boolean recordEnteredNodes
        end local 1 // boolean stepping
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0    8     1            stepping  Z
            0    8     2  recordEnteredNodes  Z
    MethodParameters:
                    Name  Flags
      stepping            
      recordEnteredNodes  

  public void disableSteppingWhileWaiting();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 392
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.stepping:Z
            ifeq 12
         1: .line 393
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         2: .line 394
            goto 6
         3: .line 396
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            ldc 1000
            invokevirtual java.lang.Object.wait:(J)V
         4: .line 397
            goto 6
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         5: pop
         6: .line 394
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 3
         7: .line 400
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.stepping:Z
         8: .line 393
            aload 1
            monitorexit
         9: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 1
            monitorexit
        11: athrow
        12: .line 403
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "Cannot disable stepping if it is not enabled!"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 405
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.InterruptedException
           2     9      10  any
          10    11      10  any

  private java.lang.String getStepId(java.lang.String, com.oracle.truffle.api.instrumentation.EventContext);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/EventContext;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // java.lang.String prefix
        start local 2 // com.oracle.truffle.api.instrumentation.EventContext c
         0: .line 408
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.recordEnteredNodes:Z
            ifeq 2
            ldc "+"
            aload 1 /* prefix */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 409
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.enteredNodes:Ljava/util/List;
            aload 2 /* c */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 411
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* c */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode.getShortId:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // com.oracle.truffle.api.instrumentation.EventContext c
        end local 1 // java.lang.String prefix
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0    3     1  prefix  Ljava/lang/String;
            0    3     2       c  Lcom/oracle/truffle/api/instrumentation/EventContext;
    MethodParameters:
        Name  Flags
      prefix  
      c       

  public java.util.List<com.oracle.truffle.api.nodes.Node> getEnteredNodes();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 415
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.enteredNodes:Ljava/util/List;
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/api/nodes/Node;>;

  public void clearEnteredNodes();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 419
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.enteredNodes:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         1: .line 420
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;

  public void go(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=3, locals=9, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // java.lang.String[] stepIds
         0: .line 423
            aload 1 /* stepIds */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 24
      StackMap locals: com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* stepId */
        start local 2 // java.lang.String stepId
         2: .line 424
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
         3: .line 425
            goto 7
         4: .line 427
      StackMap locals: com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener java.lang.String[] java.lang.String int int java.lang.String[] java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            ldc 1000
            invokevirtual java.lang.Object.wait:(J)V
         5: .line 428
            goto 7
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         6: pop
         7: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 4
         8: .line 432
            ldc "Unexpected step encountered!"
            aload 2 /* stepId */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 433
            goto 17
      StackMap locals:
      StackMap stack: java.lang.AssertionError
        10: astore 7 /* ae */
        start local 7 // java.lang.AssertionError ae
        11: .line 434
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.error:Z
        12: .line 435
            aload 7 /* ae */
            athrow
        end local 7 // java.lang.AssertionError ae
        13: .line 436
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        14: .line 437
            aload 0 /* this */
            ldc ""
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
        15: .line 438
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        16: .line 439
            aload 8
            athrow
        17: .line 437
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc ""
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
        18: .line 438
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        19: .line 424
            aload 6
            monitorexit
        20: goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: aload 6
            monitorexit
        22: athrow
        end local 2 // java.lang.String stepId
        23: .line 423
      StackMap locals: com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        24: iload 3
            iload 4
            if_icmplt 1
        25: .line 442
            return
        end local 1 // java.lang.String[] stepIds
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   26     0     this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0   26     1  stepIds  [Ljava/lang/String;
            2   23     2   stepId  Ljava/lang/String;
           11   13     7       ae  Ljava/lang/AssertionError;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.InterruptedException
           8     9      10  Class java.lang.AssertionError
           8    13      13  any
           3    20      21  any
          21    22      21  any
    MethodParameters:
         Name  Flags
      stepIds  

  public void waitUntilStopped();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 445
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 446
            goto 5
         2: .line 448
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            ldc 1000
            invokevirtual java.lang.Object.wait:(J)V
         3: .line 449
            goto 5
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         4: pop
         5: .line 446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 2
         6: .line 445
            aload 1
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 453
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.InterruptedException
           1     7       8  any
           8     9       8  any

  public void start();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 456
            aload 0 /* this */
            ldc "$START"
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waitBeforeStep:(Ljava/lang/String;)V
         1: .line 457
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;

  public void end();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 460
            aload 0 /* this */
            ldc "$END"
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waitBeforeStep:(Ljava/lang/String;)V
         1: .line 461
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;

  private void waitBeforeStep(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // java.lang.String stepId
         0: .line 464
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.stepping:Z
            ifeq 13
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.error:Z
            ifne 13
         1: .line 465
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 466
            aload 0 /* this */
            aload 1 /* stepId */
            putfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
         3: .line 467
            goto 8
         4: .line 468
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         5: .line 470
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sync:Ljava/lang/Object;
            ldc 1000
            invokevirtual java.lang.Object.wait:(J)V
         6: .line 471
            goto 8
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         7: pop
         8: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waiting:Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 4
         9: .line 465
            aload 2
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 2
            monitorexit
        12: athrow
        13: .line 476
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String stepId
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0   14     1  stepId  Ljava/lang/String;
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.InterruptedException
           2    10      11  any
          11    12      11  any
    MethodParameters:
        Name  Flags
      stepId  

  public void onEnter(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 480
            aload 0 /* this */
            ldc "+"
            aload 1 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.getStepId:(Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/EventContext;)Ljava/lang/String;
            astore 3 /* stepId */
        start local 3 // java.lang.String stepId
         1: .line 481
            aload 0 /* this */
            aload 3 /* stepId */
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waitBeforeStep:(Ljava/lang/String;)V
         2: .line 482
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sb:Ljava/lang/StringBuilder;
            aload 3 /* stepId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 483
            return
        end local 3 // java.lang.String stepId
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0    4     1  context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    4     2    frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1    4     3   stepId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  
      frame    

  public void onReturnValue(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 3 // java.lang.Object result
         0: .line 487
            aload 0 /* this */
            ldc "-"
            aload 1 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.getStepId:(Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/EventContext;)Ljava/lang/String;
            astore 4 /* stepId */
        start local 4 // java.lang.String stepId
         1: .line 488
            aload 0 /* this */
            aload 4 /* stepId */
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waitBeforeStep:(Ljava/lang/String;)V
         2: .line 489
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sb:Ljava/lang/StringBuilder;
            aload 4 /* stepId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 490
            return
        end local 4 // java.lang.String stepId
        end local 3 // java.lang.Object result
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0    4     1  context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    4     2    frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    4     3   result  Ljava/lang/Object;
            1    4     4   stepId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  
      frame    
      result   

  public void onReturnExceptional(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 3 // java.lang.Throwable exception
         0: .line 494
            aload 0 /* this */
            ldc "*"
            aload 1 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.getStepId:(Ljava/lang/String;Lcom/oracle/truffle/api/instrumentation/EventContext;)Ljava/lang/String;
            astore 4 /* stepId */
        start local 4 // java.lang.String stepId
         1: .line 495
            aload 0 /* this */
            aload 4 /* stepId */
            invokevirtual com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.waitBeforeStep:(Ljava/lang/String;)V
         2: .line 496
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sb:Ljava/lang/StringBuilder;
            aload 4 /* stepId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 497
            return
        end local 4 // java.lang.String stepId
        end local 3 // java.lang.Throwable exception
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
            0    4     1    context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    4     2      frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    4     3  exception  Ljava/lang/Throwable;
            1    4     4     stepId  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      context    
      frame      
      exception  

  public java.lang.String getRecording();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
         0: .line 500
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener.sb:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/GradualInstrumentationTest$RecordingExecutionEventListener;
}
SourceFile: "GradualInstrumentationTest.java"
NestHost: com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest
InnerClasses:
  public RecordingExecutionEventListener = com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest$RecordingExecutionEventListener of com.oracle.truffle.api.instrumentation.test.GradualInstrumentationTest
  public abstract BaseNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage