final class com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback implements com.oracle.truffle.api.debug.SuspendedCallback
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback
  super_class: java.lang.Object
{
  private final com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo info;
    descriptor: Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.llvm.tests.debug.StopRequest bpr;
    descriptor: Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo, com.oracle.truffle.llvm.tests.debug.StopRequest);
    descriptor: (Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;Lcom/oracle/truffle/llvm/tests/debug/StopRequest;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback this
        start local 1 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo info
        start local 2 // com.oracle.truffle.llvm.tests.debug.StopRequest bpr
         0: .line 208
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 209
            aload 0 /* this */
            aload 1 /* info */
            putfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.info:Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
         2: .line 210
            aload 0 /* this */
            aload 2 /* bpr */
            putfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
         3: .line 211
            return
        end local 2 // com.oracle.truffle.llvm.tests.debug.StopRequest bpr
        end local 1 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo info
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$TestCallback;
            0    4     1  info  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
            0    4     2   bpr  Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
    MethodParameters:
      Name  Flags
      info  
      bpr   

  private static void setStrategy(com.oracle.truffle.api.debug.SuspendedEvent, com.oracle.truffle.api.debug.DebugStackFrame, com.oracle.truffle.llvm.tests.debug.ContinueStrategy);
    descriptor: (Lcom/oracle/truffle/api/debug/SuspendedEvent;Lcom/oracle/truffle/api/debug/DebugStackFrame;Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.debug.SuspendedEvent event
        start local 1 // com.oracle.truffle.api.debug.DebugStackFrame frame
        start local 2 // com.oracle.truffle.llvm.tests.debug.ContinueStrategy strategy
         0: .line 214
            aload 2 /* strategy */
            ifnull 3
         1: .line 215
            aload 2 /* strategy */
            aload 0 /* event */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.llvm.tests.debug.ContinueStrategy.prepareInEvent:(Lcom/oracle/truffle/api/debug/SuspendedEvent;Lcom/oracle/truffle/api/debug/DebugStackFrame;)V
         2: .line 216
            goto 4
         3: .line 217
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.llvm.tests.debug.ContinueStrategy.STEP_INTO:Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;
            aload 0 /* event */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.llvm.tests.debug.ContinueStrategy.prepareInEvent:(Lcom/oracle/truffle/api/debug/SuspendedEvent;Lcom/oracle/truffle/api/debug/DebugStackFrame;)V
         4: .line 219
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.llvm.tests.debug.ContinueStrategy strategy
        end local 1 // com.oracle.truffle.api.debug.DebugStackFrame frame
        end local 0 // com.oracle.truffle.api.debug.SuspendedEvent event
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0     event  Lcom/oracle/truffle/api/debug/SuspendedEvent;
            0    5     1     frame  Lcom/oracle/truffle/api/debug/DebugStackFrame;
            0    5     2  strategy  Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;
    MethodParameters:
          Name  Flags
      event     
      frame     
      strategy  

  public void onSuspend(com.oracle.truffle.api.debug.SuspendedEvent);
    descriptor: (Lcom/oracle/truffle/api/debug/SuspendedEvent;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback this
        start local 1 // com.oracle.truffle.api.debug.SuspendedEvent event
         0: .line 223
            aload 1 /* event */
            invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getTopStackFrame:()Lcom/oracle/truffle/api/debug/DebugStackFrame;
            astore 2 /* frame */
        start local 2 // com.oracle.truffle.api.debug.DebugStackFrame frame
         1: .line 225
            aload 1 /* event */
            invokevirtual com.oracle.truffle.api.debug.SuspendedEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartLine:()I
            istore 3 /* currentLine */
        start local 3 // int currentLine
         2: .line 227
            iload 3 /* currentLine */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.info:Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo.getLastStop:()I
            if_icmpne 5
         3: .line 232
            aload 1 /* event */
            aload 2 /* frame */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.info:Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo.getLastStrategy:()Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;
            invokestatic com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.setStrategy:(Lcom/oracle/truffle/api/debug/SuspendedEvent;Lcom/oracle/truffle/api/debug/DebugStackFrame;Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;)V
         4: .line 233
            return
         5: .line 235
      StackMap locals: com.oracle.truffle.api.debug.DebugStackFrame int
      StackMap stack:
            iload 3 /* currentLine */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getLine:()I
            if_icmpne 10
         6: .line 236
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.info:Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
            iload 3 /* currentLine */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo.setLastStop:(I)V
         7: .line 237
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.info:Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getNextAction:()Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo.setLastStrategy:(Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;)V
         8: .line 238
            aload 1 /* event */
            aload 2 /* frame */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getNextAction:()Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;
            invokestatic com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.setStrategy:(Lcom/oracle/truffle/api/debug/SuspendedEvent;Lcom/oracle/truffle/api/debug/DebugStackFrame;Lcom/oracle/truffle/llvm/tests/debug/ContinueStrategy;)V
         9: .line 240
            goto 11
        10: .line 241
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            ldc "Unexpected stop at line %d"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 3 /* currentLine */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        11: .line 244
      StackMap locals:
      StackMap stack:
            aload 2 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getScope:()Lcom/oracle/truffle/api/debug/DebugScope;
            astore 4 /* actualScope */
        start local 4 // com.oracle.truffle.api.debug.DebugScope actualScope
        12: .line 245
            ldc "Unexpected function name!"
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getFunctionName:()Ljava/lang/String;
            aload 2 /* frame */
            invokevirtual com.oracle.truffle.api.debug.DebugStackFrame.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 248
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.iterator:()Ljava/util/Iterator;
            astore 6
            goto 21
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback com.oracle.truffle.api.debug.SuspendedEvent com.oracle.truffle.api.debug.DebugStackFrame int com.oracle.truffle.api.debug.DebugScope top java.util.Iterator
      StackMap stack:
        14: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.tests.debug.StopRequest$Scope
            astore 5 /* expectedScope */
        start local 5 // com.oracle.truffle.llvm.tests.debug.StopRequest$Scope expectedScope
        15: .line 249
            aload 4 /* actualScope */
            ifnonnull 17
        16: .line 250
            new java.lang.AssertionError
            dup
            ldc "Missing scope!"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        17: .line 252
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback com.oracle.truffle.api.debug.SuspendedEvent com.oracle.truffle.api.debug.DebugStackFrame int com.oracle.truffle.api.debug.DebugScope com.oracle.truffle.llvm.tests.debug.StopRequest$Scope java.util.Iterator
      StackMap stack:
            aload 5 /* expectedScope */
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest$Scope.getName:()Ljava/lang/String;
            ifnull 19
        18: .line 253
            ldc "Unexpected Scope name!"
            aload 5 /* expectedScope */
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest$Scope.getName:()Ljava/lang/String;
            aload 4 /* actualScope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        19: .line 255
      StackMap locals:
      StackMap stack:
            aload 4 /* actualScope */
            aload 5 /* expectedScope */
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest$Scope.getLocals:()Ljava/util/Map;
            aload 5 /* expectedScope */
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest$Scope.isPartial:()Z
            invokestatic com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.assertValues:(Lcom/oracle/truffle/api/debug/DebugScope;Ljava/util/Map;Z)V
        20: .line 256
            aload 4 /* actualScope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getParent:()Lcom/oracle/truffle/api/debug/DebugScope;
            astore 4 /* actualScope */
        end local 5 // com.oracle.truffle.llvm.tests.debug.StopRequest$Scope expectedScope
        21: .line 248
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback com.oracle.truffle.api.debug.SuspendedEvent com.oracle.truffle.api.debug.DebugStackFrame int com.oracle.truffle.api.debug.DebugScope top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        22: .line 258
            goto 25
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback com.oracle.truffle.api.debug.SuspendedEvent com.oracle.truffle.api.debug.DebugStackFrame int com.oracle.truffle.api.debug.DebugScope
      StackMap stack: java.lang.Throwable
        23: astore 5 /* t */
        start local 5 // java.lang.Throwable t
        24: .line 259
            new java.lang.AssertionError
            dup
            ldc "Error in function %s on line %d"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getFunctionName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getLine:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 5 /* t */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Throwable t
        25: .line 261
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.oracle.truffle.api.debug.DebugScope actualScope
        end local 3 // int currentLine
        end local 2 // com.oracle.truffle.api.debug.DebugStackFrame frame
        end local 1 // com.oracle.truffle.api.debug.SuspendedEvent event
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   26     0           this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$TestCallback;
            0   26     1          event  Lcom/oracle/truffle/api/debug/SuspendedEvent;
            1   26     2          frame  Lcom/oracle/truffle/api/debug/DebugStackFrame;
            2   26     3    currentLine  I
           12   26     4    actualScope  Lcom/oracle/truffle/api/debug/DebugScope;
           15   21     5  expectedScope  Lcom/oracle/truffle/llvm/tests/debug/StopRequest$Scope;
           24   25     5              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          13    22      23  Class java.lang.Throwable
    MethodParameters:
       Name  Flags
      event  

  boolean isDone();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback this
         0: .line 264
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.info:Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo.getLastStop:()I
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.bpr:Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
            invokevirtual com.oracle.truffle.llvm.tests.debug.StopRequest.getLine:()I
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$TestCallback;
}
SourceFile: "LLVMDebugTestBase.java"
NestHost: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase
InnerClasses:
  private final BreakInfo = com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo of com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase
  private final TestCallback = com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback of com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase
  final Scope = com.oracle.truffle.llvm.tests.debug.StopRequest$Scope of com.oracle.truffle.llvm.tests.debug.StopRequest