public abstract class com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase
  super_class: java.lang.Object
{
  private static final java.lang.String LANG_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "llvm"

  private static final java.lang.String TRACE_EXT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: ".txt"

  public static final java.lang.String TEST_FOLDER_EXT;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: ".dir"

  private static final java.lang.String OPTION_LAZY_PARSING;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "llvm.lazyParsing"

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

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

  private com.oracle.truffle.tck.DebuggerTester tester;
    descriptor: Lcom/oracle/truffle/tck/DebuggerTester;
    flags: (0x0002) ACC_PRIVATE

  void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
        start local 1 // java.lang.String testName
        start local 2 // java.lang.String configuration
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 67
            aload 0 /* this */
            aload 1 /* testName */
            putfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.testName:Ljava/lang/String;
         2: .line 68
            aload 0 /* this */
            aload 2 /* configuration */
            putfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.configuration:Ljava/lang/String;
         3: .line 69
            return
        end local 2 // java.lang.String configuration
        end local 1 // java.lang.String testName
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            0    4     1       testName  Ljava/lang/String;
            0    4     2  configuration  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      testName       
      configuration  

  abstract void setContextOptions(org.graalvm.polyglot.Context$Builder);
    descriptor: (Lorg/graalvm/polyglot/Context$Builder;)V
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
                Name  Flags
      contextBuilder  

  abstract java.nio.file.Path getBitcodePath();
    descriptor: ()Ljava/nio/file/Path;
    flags: (0x0400) ACC_ABSTRACT

  abstract java.nio.file.Path getSourcePath();
    descriptor: ()Ljava/nio/file/Path;
    flags: (0x0400) ACC_ABSTRACT

  abstract java.nio.file.Path getTracePath();
    descriptor: ()Ljava/nio/file/Path;
    flags: (0x0400) ACC_ABSTRACT

  java.lang.String getTestName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 85
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.testName:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;

  boolean isCxx();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 89
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.testName:Ljava/lang/String;
            ldc ".cpp"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ireturn
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;

  public void before();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 94
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "llvm"
            aastore
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            astore 1 /* contextBuilder */
        start local 1 // org.graalvm.polyglot.Context$Builder contextBuilder
         1: .line 95
            aload 1 /* contextBuilder */
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowAllAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
            pop
         2: .line 96
            aload 1 /* contextBuilder */
            ldc "llvm.lazyParsing"
            iconst_0
            invokestatic java.lang.String.valueOf:(Z)Ljava/lang/String;
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            pop
         3: .line 97
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.isCxx:()Z
            ifeq 5
         4: .line 98
            aload 1 /* contextBuilder */
            ldc "llvm.loadC++Libraries"
            ldc "true"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            pop
         5: .line 100
      StackMap locals: org.graalvm.polyglot.Context$Builder
      StackMap stack:
            aload 0 /* this */
            aload 1 /* contextBuilder */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.setContextOptions:(Lorg/graalvm/polyglot/Context$Builder;)V
         6: .line 101
            aload 0 /* this */
            new com.oracle.truffle.tck.DebuggerTester
            dup
            aload 1 /* contextBuilder */
            invokespecial com.oracle.truffle.tck.DebuggerTester.<init>:(Lorg/graalvm/polyglot/Context$Builder;)V
            putfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.tester:Lcom/oracle/truffle/tck/DebuggerTester;
         7: .line 102
            return
        end local 1 // org.graalvm.polyglot.Context$Builder contextBuilder
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            1    8     1  contextBuilder  Lorg/graalvm/polyglot/Context$Builder;
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  public void dispose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 106
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.tester:Lcom/oracle/truffle/tck/DebuggerTester;
            invokevirtual com.oracle.truffle.tck.DebuggerTester.close:()V
         1: .line 107
            return
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
    RuntimeVisibleAnnotations: 
      org.junit.After()

  private static org.graalvm.polyglot.Source loadSource(java.io.File);
    descriptor: (Ljava/io/File;)Lorg/graalvm/polyglot/Source;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.io.File file
         0: .line 112
            aload 0 /* file */
            invokevirtual java.io.File.getCanonicalFile:()Ljava/io/File;
            astore 2 /* canonicalFile */
        start local 2 // java.io.File canonicalFile
         1: .line 113
            ldc "llvm"
            aload 2 /* canonicalFile */
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/io/File;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        end local 2 // java.io.File canonicalFile
        start local 1 // org.graalvm.polyglot.Source source
         2: .line 114
            goto 5
        end local 1 // org.graalvm.polyglot.Source source
      StackMap locals:
      StackMap stack: java.io.IOException
         3: astore 2 /* ex */
        start local 2 // java.io.IOException ex
         4: .line 115
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not load source: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* file */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException ex
        start local 1 // org.graalvm.polyglot.Source source
         5: .line 117
      StackMap locals: org.graalvm.polyglot.Source
      StackMap stack:
            aload 1 /* source */
            areturn
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           file  Ljava/io/File;
            2    3     1         source  Lorg/graalvm/polyglot/Source;
            5    6     1         source  Lorg/graalvm/polyglot/Source;
            1    2     2  canonicalFile  Ljava/io/File;
            4    5     2             ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     2       3  Class java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  protected org.graalvm.polyglot.Source loadOriginalSource();
    descriptor: ()Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 121
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.getSourcePath:()Ljava/nio/file/Path;
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.testName:Ljava/lang/String;
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            astore 1 /* file */
        start local 1 // java.io.File file
         1: .line 122
            new java.lang.StringBuilder
            dup
            ldc "Locate Source "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* file */
            invokevirtual java.io.File.exists:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         2: .line 123
            aload 1 /* file */
            invokestatic com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.loadSource:(Ljava/io/File;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 1 // java.io.File file
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            1    3     1  file  Ljava/io/File;

  protected org.graalvm.polyglot.Source loadBitcodeSource();
    descriptor: ()Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 127
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.getBitcodePath:()Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.testName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".dir"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.configuration:Ljava/lang/String;
            aastore
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            astore 1 /* file */
        start local 1 // java.io.File file
         1: .line 128
            new java.lang.StringBuilder
            dup
            ldc "Locate Bitcode "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* file */
            invokevirtual java.io.File.exists:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         2: .line 129
            aload 1 /* file */
            invokestatic com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.loadSource:(Ljava/io/File;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 1 // java.io.File file
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            1    3     1  file  Ljava/io/File;

  private com.oracle.truffle.llvm.tests.debug.Trace readTrace();
    descriptor: ()Lcom/oracle/truffle/llvm/tests/debug/Trace;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 133
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.getTracePath:()Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.testName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".txt"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* path */
        start local 1 // java.nio.file.Path path
         1: .line 134
            new java.lang.StringBuilder
            dup
            ldc "Locate Trace "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* path */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            invokevirtual java.io.File.exists:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         2: .line 135
            aload 1 /* path */
            invokestatic com.oracle.truffle.llvm.tests.debug.Trace.parse:(Ljava/nio/file/Path;)Lcom/oracle/truffle/llvm/tests/debug/Trace;
            areturn
        end local 1 // java.nio.file.Path path
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            1    3     1  path  Ljava/nio/file/Path;

  private static void assertValues(com.oracle.truffle.api.debug.DebugScope, java.util.Map<java.lang.String, com.oracle.truffle.llvm.tests.debug.LLVMDebugValue>, );
    descriptor: (Lcom/oracle/truffle/api/debug/DebugScope;Ljava/util/Map;Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // com.oracle.truffle.api.debug.DebugScope scope
        start local 1 // java.util.Map expectedLocals
        start local 2 // boolean isPartialScope
         0: .line 139
            aload 0 /* scope */
            ifnonnull 2
         1: .line 140
            new java.lang.AssertionError
            dup
            ldc "Missing Scope!"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 143
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* count */
        start local 3 // int count
         3: .line 144
            aload 0 /* scope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getDeclaredValues:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 15
      StackMap locals: com.oracle.truffle.api.debug.DebugScope java.util.Map int int top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebugValue
            astore 4 /* actual */
        start local 4 // com.oracle.truffle.api.debug.DebugValue actual
         5: .line 146
            aload 4 /* actual */
            invokevirtual com.oracle.truffle.api.debug.DebugValue.getName:()Ljava/lang/String;
            astore 6 /* name */
        start local 6 // java.lang.String name
         6: .line 147
            aload 1 /* expectedLocals */
            aload 4 /* actual */
            invokevirtual com.oracle.truffle.api.debug.DebugValue.getName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.tests.debug.LLVMDebugValue
            astore 7 /* expected */
        start local 7 // com.oracle.truffle.llvm.tests.debug.LLVMDebugValue expected
         7: .line 149
            aload 7 /* expected */
            ifnull 13
         8: .line 151
            aload 7 /* expected */
            aload 4 /* actual */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugValue.check:(Lcom/oracle/truffle/api/debug/DebugValue;)V
         9: .line 152
            iinc 3 /* count */ 1
        10: .line 153
            goto 15
      StackMap locals: com.oracle.truffle.api.debug.DebugScope java.util.Map int int com.oracle.truffle.api.debug.DebugValue java.util.Iterator java.lang.String com.oracle.truffle.llvm.tests.debug.LLVMDebugValue
      StackMap stack: java.lang.Throwable
        11: astore 8 /* t */
        start local 8 // java.lang.Throwable t
        12: .line 154
            new java.lang.AssertionError
            dup
            ldc "Error in local %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* name */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 8 /* t */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 8 // java.lang.Throwable t
        13: .line 157
      StackMap locals:
      StackMap stack:
            iload 2 /* isPartialScope */
            ifne 15
        14: .line 158
            new java.lang.AssertionError
            dup
            ldc "Unexpected scope member: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* name */
            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
        end local 7 // com.oracle.truffle.llvm.tests.debug.LLVMDebugValue expected
        end local 6 // java.lang.String name
        end local 4 // com.oracle.truffle.api.debug.DebugValue actual
        15: .line 144
      StackMap locals: com.oracle.truffle.api.debug.DebugScope java.util.Map int int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        16: .line 164
            aload 0 /* scope */
            invokevirtual com.oracle.truffle.api.debug.DebugScope.getReceiver:()Lcom/oracle/truffle/api/debug/DebugValue;
            astore 4 /* receiver */
        start local 4 // com.oracle.truffle.api.debug.DebugValue receiver
        17: .line 165
            aload 4 /* receiver */
            ifnull 22
        18: .line 166
            aload 1 /* expectedLocals */
            aload 4 /* receiver */
            invokevirtual com.oracle.truffle.api.debug.DebugValue.getName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.tests.debug.LLVMDebugValue
            astore 5 /* expected */
        start local 5 // com.oracle.truffle.llvm.tests.debug.LLVMDebugValue expected
        19: .line 167
            aload 5 /* expected */
            ifnull 22
        20: .line 168
            aload 5 /* expected */
            aload 4 /* receiver */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugValue.check:(Lcom/oracle/truffle/api/debug/DebugValue;)V
        21: .line 169
            iinc 3 /* count */ 1
        end local 5 // com.oracle.truffle.llvm.tests.debug.LLVMDebugValue expected
        22: .line 173
      StackMap locals: com.oracle.truffle.api.debug.DebugScope java.util.Map int int com.oracle.truffle.api.debug.DebugValue
      StackMap stack:
            ldc "Unexpected number of scope variables"
            aload 1 /* expectedLocals */
            invokeinterface java.util.Map.size:()I
            i2l
            iload 3 /* count */
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        23: .line 174
            return
        end local 4 // com.oracle.truffle.api.debug.DebugValue receiver
        end local 3 // int count
        end local 2 // boolean isPartialScope
        end local 1 // java.util.Map expectedLocals
        end local 0 // com.oracle.truffle.api.debug.DebugScope scope
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   24     0           scope  Lcom/oracle/truffle/api/debug/DebugScope;
            0   24     1  expectedLocals  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugValue;>;
            0   24     2  isPartialScope  Z
            3   24     3           count  I
            5   15     4          actual  Lcom/oracle/truffle/api/debug/DebugValue;
            6   15     6            name  Ljava/lang/String;
            7   15     7        expected  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugValue;
           12   13     8               t  Ljava/lang/Throwable;
           17   24     4        receiver  Lcom/oracle/truffle/api/debug/DebugValue;
           19   22     5        expected  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugValue;
      Exception table:
        from    to  target  type
           8    10      11  Class java.lang.Throwable
    Signature: (Lcom/oracle/truffle/api/debug/DebugScope;Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugValue;>;Z)V
    MethodParameters:
                Name  Flags
      scope           
      expectedLocals  
      isPartialScope  

  private static com.oracle.truffle.api.debug.Breakpoint buildBreakPoint(org.graalvm.polyglot.Source, int);
    descriptor: (Lorg/graalvm/polyglot/Source;I)Lcom/oracle/truffle/api/debug/Breakpoint;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.polyglot.Source source
        start local 1 // int line
         0: .line 269
            aload 0 /* source */
            invokevirtual org.graalvm.polyglot.Source.getURI:()Ljava/net/URI;
            invokestatic com.oracle.truffle.api.debug.Breakpoint.newBuilder:(Ljava/net/URI;)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
            iload 1 /* line */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint$Builder.lineIs:(I)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
            invokevirtual com.oracle.truffle.api.debug.Breakpoint$Builder.build:()Lcom/oracle/truffle/api/debug/Breakpoint;
            areturn
        end local 1 // int line
        end local 0 // org.graalvm.polyglot.Source source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  source  Lorg/graalvm/polyglot/Source;
            0    1     1    line  I
    MethodParameters:
        Name  Flags
      source  
      line    

  private void runTest(org.graalvm.polyglot.Source, org.graalvm.polyglot.Source, com.oracle.truffle.llvm.tests.debug.Trace);
    descriptor: (Lorg/graalvm/polyglot/Source;Lorg/graalvm/polyglot/Source;Lcom/oracle/truffle/llvm/tests/debug/Trace;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=14, args_size=4
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
        start local 1 // org.graalvm.polyglot.Source source
        start local 2 // org.graalvm.polyglot.Source bitcode
        start local 3 // com.oracle.truffle.llvm.tests.debug.Trace trace
         0: .line 274
            aconst_null
            astore 4
            aconst_null
            astore 5
         1: new com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput
            dup
            invokespecial com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput.<init>:()V
            astore 6 /* out */
        start local 6 // com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput out
         2: .line 275
            aconst_null
            astore 7
            aconst_null
            astore 8
         3: aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.tester:Lcom/oracle/truffle/tck/DebuggerTester;
            invokevirtual com.oracle.truffle.tck.DebuggerTester.startSession:()Lcom/oracle/truffle/api/debug/DebuggerSession;
            astore 9 /* session */
        start local 9 // com.oracle.truffle.api.debug.DebuggerSession session
         4: .line 276
            aload 3 /* trace */
            invokevirtual com.oracle.truffle.llvm.tests.debug.Trace.requestedBreakpoints:()Ljava/util/stream/IntStream;
            aload 9 /* session */
            aload 1 /* source */
            invokedynamic accept(Lcom/oracle/truffle/api/debug/DebuggerSession;Lorg/graalvm/polyglot/Source;)Ljava/util/function/IntConsumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (I)V
                  com/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase.lambda$0(Lcom/oracle/truffle/api/debug/DebuggerSession;Lorg/graalvm/polyglot/Source;I)V (6)
                  (I)V
            invokeinterface java.util.stream.IntStream.forEach:(Ljava/util/function/IntConsumer;)V
         5: .line 277
            aload 3 /* trace */
            invokevirtual com.oracle.truffle.llvm.tests.debug.Trace.suspendOnEntry:()Z
            ifeq 7
         6: .line 278
            aload 9 /* session */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.suspendNextExecution:()V
         7: .line 281
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase org.graalvm.polyglot.Source org.graalvm.polyglot.Source com.oracle.truffle.llvm.tests.debug.Trace java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput java.lang.Throwable java.lang.Throwable com.oracle.truffle.api.debug.DebuggerSession
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.tester:Lcom/oracle/truffle/tck/DebuggerTester;
            aload 2 /* bitcode */
            invokevirtual com.oracle.truffle.tck.DebuggerTester.startEval:(Lorg/graalvm/polyglot/Source;)V
         8: .line 283
            new com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo
            dup
            invokespecial com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo.<init>:()V
            astore 10 /* info */
        start local 10 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo info
         9: .line 284
            aload 3 /* trace */
            invokevirtual com.oracle.truffle.llvm.tests.debug.Trace.iterator:()Ljava/util/Iterator;
            astore 12
            goto 14
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase org.graalvm.polyglot.Source org.graalvm.polyglot.Source com.oracle.truffle.llvm.tests.debug.Trace java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput java.lang.Throwable java.lang.Throwable com.oracle.truffle.api.debug.DebuggerSession com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo top java.util.Iterator
      StackMap stack:
        10: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.llvm.tests.debug.StopRequest
            astore 11 /* bpr */
        start local 11 // com.oracle.truffle.llvm.tests.debug.StopRequest bpr
        11: .line 285
            new com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback
            dup
            aload 10 /* info */
            aload 11 /* bpr */
            invokespecial com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.<init>:(Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;Lcom/oracle/truffle/llvm/tests/debug/StopRequest;)V
            astore 13 /* expectedEvent */
        start local 13 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback expectedEvent
        12: .line 287
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase org.graalvm.polyglot.Source org.graalvm.polyglot.Source com.oracle.truffle.llvm.tests.debug.Trace java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput java.lang.Throwable java.lang.Throwable com.oracle.truffle.api.debug.DebuggerSession com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo com.oracle.truffle.llvm.tests.debug.StopRequest java.util.Iterator com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.tester:Lcom/oracle/truffle/tck/DebuggerTester;
            aload 13 /* expectedEvent */
            invokevirtual com.oracle.truffle.tck.DebuggerTester.expectSuspended:(Lcom/oracle/truffle/api/debug/SuspendedCallback;)V
        13: .line 288
            aload 13 /* expectedEvent */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback.isDone:()Z
            ifeq 12
        end local 13 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback expectedEvent
        end local 11 // com.oracle.truffle.llvm.tests.debug.StopRequest bpr
        14: .line 284
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase org.graalvm.polyglot.Source org.graalvm.polyglot.Source com.oracle.truffle.llvm.tests.debug.Trace java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput java.lang.Throwable java.lang.Throwable com.oracle.truffle.api.debug.DebuggerSession com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo top java.util.Iterator
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        15: .line 291
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.tester:Lcom/oracle/truffle/tck/DebuggerTester;
            invokevirtual com.oracle.truffle.tck.DebuggerTester.expectDone:()Ljava/lang/String;
            pop
        end local 10 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo info
        16: .line 292
            aload 9 /* session */
            ifnull 22
            aload 9 /* session */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.close:()V
            goto 22
      StackMap locals: com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase org.graalvm.polyglot.Source org.graalvm.polyglot.Source com.oracle.truffle.llvm.tests.debug.Trace java.lang.Throwable java.lang.Throwable com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput java.lang.Throwable java.lang.Throwable com.oracle.truffle.api.debug.DebuggerSession
      StackMap stack: java.lang.Throwable
        17: astore 7
            aload 9 /* session */
            ifnull 18
            aload 9 /* session */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.close:()V
        end local 9 // com.oracle.truffle.api.debug.DebuggerSession session
      StackMap locals:
      StackMap stack:
        18: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: astore 8
            aload 7
            ifnonnull 20
            aload 8
            astore 7
            goto 21
      StackMap locals:
      StackMap stack:
        20: aload 7
            aload 8
            if_acmpeq 21
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        21: aload 7
            athrow
        22: .line 293
      StackMap locals:
      StackMap stack:
            aload 6 /* out */
            ifnull 28
            aload 6 /* out */
            invokevirtual com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput.close:()V
            goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 4
            aload 6 /* out */
            ifnull 24
            aload 6 /* out */
            invokevirtual com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput.close:()V
        end local 6 // com.oracle.truffle.llvm.tests.pipe.CaptureNativeOutput out
      StackMap locals:
      StackMap stack:
        24: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: astore 5
            aload 4
            ifnonnull 26
            aload 5
            astore 4
            goto 27
      StackMap locals:
      StackMap stack:
        26: aload 4
            aload 5
            if_acmpeq 27
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        27: aload 4
            athrow
        28: .line 294
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.llvm.tests.debug.Trace trace
        end local 2 // org.graalvm.polyglot.Source bitcode
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0           this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            0   29     1         source  Lorg/graalvm/polyglot/Source;
            0   29     2        bitcode  Lorg/graalvm/polyglot/Source;
            0   29     3          trace  Lcom/oracle/truffle/llvm/tests/debug/Trace;
            2   24     6            out  Lcom/oracle/truffle/llvm/tests/pipe/CaptureNativeOutput;
            4   18     9        session  Lcom/oracle/truffle/api/debug/DebuggerSession;
            9   16    10           info  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$BreakInfo;
           11   14    11            bpr  Lcom/oracle/truffle/llvm/tests/debug/StopRequest;
           12   14    13  expectedEvent  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase$TestCallback;
      Exception table:
        from    to  target  type
           4    16      17  any
           3    19      19  any
           2    22      23  any
           1    25      25  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      source   
      bitcode  
      trace    

  public void test();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
         0: .line 298
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.readTrace:()Lcom/oracle/truffle/llvm/tests/debug/Trace;
            astore 1 /* trace */
        start local 1 // com.oracle.truffle.llvm.tests.debug.Trace trace
         1: .line 302
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.loadOriginalSource:()Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         2: .line 303
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.loadBitcodeSource:()Lorg/graalvm/polyglot/Source;
            astore 3 /* bitcode */
        start local 3 // org.graalvm.polyglot.Source bitcode
         3: .line 304
            aload 0 /* this */
            aload 2 /* source */
            aload 3 /* bitcode */
            aload 1 /* trace */
            invokevirtual com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.runTest:(Lorg/graalvm/polyglot/Source;Lorg/graalvm/polyglot/Source;Lcom/oracle/truffle/llvm/tests/debug/Trace;)V
         4: .line 305
            return
        end local 3 // org.graalvm.polyglot.Source bitcode
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // com.oracle.truffle.llvm.tests.debug.Trace trace
        end local 0 // com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/oracle/truffle/llvm/tests/debug/LLVMDebugTestBase;
            1    5     1    trace  Lcom/oracle/truffle/llvm/tests/debug/Trace;
            2    5     2   source  Lorg/graalvm/polyglot/Source;
            3    5     3  bitcode  Lorg/graalvm/polyglot/Source;
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void lambda$0(com.oracle.truffle.api.debug.DebuggerSession, org.graalvm.polyglot.Source, int);
    descriptor: (Lcom/oracle/truffle/api/debug/DebuggerSession;Lorg/graalvm/polyglot/Source;I)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 2 // int line
         0: .line 276
            aload 0
            aload 1
            iload 2 /* line */
            invokestatic com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase.buildBreakPoint:(Lorg/graalvm/polyglot/Source;I)Lcom/oracle/truffle/api/debug/Breakpoint;
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.install:(Lcom/oracle/truffle/api/debug/Breakpoint;)Lcom/oracle/truffle/api/debug/Breakpoint;
            return
        end local 2 // int line
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     2  line  I
}
SourceFile: "LLVMDebugTestBase.java"
NestMembers:
  com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$BreakInfo  com.oracle.truffle.llvm.tests.debug.LLVMDebugTestBase$TestCallback
InnerClasses:
  public final Builder = com.oracle.truffle.api.debug.Breakpoint$Builder of com.oracle.truffle.api.debug.Breakpoint
  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
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
  public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source