public class com.oracle.truffle.api.instrumentation.test.InstrumentationTest extends com.oracle.truffle.api.instrumentation.test.AbstractInstrumentationTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  super_class: com.oracle.truffle.api.instrumentation.test.AbstractInstrumentationTest
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 134
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.AbstractInstrumentationTest.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;

  public void testMetadata();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 141
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testMetadataType1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrumentHandle1 */
        start local 1 // org.graalvm.polyglot.Instrument instrumentHandle1
         1: .line 143
            ldc "name"
            aload 1 /* instrumentHandle1 */
            invokevirtual org.graalvm.polyglot.Instrument.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 144
            ldc "version"
            aload 1 /* instrumentHandle1 */
            invokevirtual org.graalvm.polyglot.Instrument.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 145
            ldc "testMetadataType1"
            aload 1 /* instrumentHandle1 */
            invokevirtual org.graalvm.polyglot.Instrument.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 146
            aload 0 /* this */
            aload 1 /* instrumentHandle1 */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isInitialized:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         5: .line 147
            aload 0 /* this */
            aload 1 /* instrumentHandle1 */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isCreated:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         6: .line 148
            return
        end local 1 // org.graalvm.polyglot.Instrument instrumentHandle1
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    7     1  instrumentHandle1  Lorg/graalvm/polyglot/Instrument;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void forgetsToRegisterADeclaredService();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 166
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testBrokenRegistration"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* handle */
        start local 1 // org.graalvm.polyglot.Instrument handle
         1: .line 167
            aload 1 /* handle */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         2: .line 168
            aload 1 /* handle */
            ldc Ljava/lang/Runnable;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 2 /* r */
        start local 2 // java.lang.Runnable r
         3: .line 169
            ldc "The service isn't there"
            aload 2 /* r */
            invokestatic org.junit.Assert.assertNull:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 170
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            ldc "declares service java.lang.Runnable but doesn't register it"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 6
         5: .line 171
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         6: .line 173
      StackMap locals: org.graalvm.polyglot.Instrument java.lang.Runnable
      StackMap stack:
            return
        end local 2 // java.lang.Runnable r
        end local 1 // org.graalvm.polyglot.Instrument handle
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    7     1  handle  Lorg/graalvm/polyglot/Instrument;
            3    7     2       r  Ljava/lang/Runnable;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void queryInstrumentsBeforeUseAndObtainSpecialService();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 200
            aload 0 /* this */
            invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual org.graalvm.polyglot.Engine$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Engine$Builder;
            invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
         1: .line 201
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         2: .line 202
            aconst_null
            astore 1 /* start */
        start local 1 // java.lang.Runnable start
         3: .line 203
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 10
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.lang.Runnable top java.util.Iterator
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 2 /* instr */
        start local 2 // org.graalvm.polyglot.Instrument instr
         5: .line 204
            aload 2 /* instr */
            ldc Ljava/lang/Runnable;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 4 /* r */
        start local 4 // java.lang.Runnable r
         6: .line 205
            aload 4 /* r */
            ifnull 10
         7: .line 206
            aload 4 /* r */
            astore 1 /* start */
         8: .line 207
            aload 1 /* start */
            invokeinterface java.lang.Runnable.run:()V
         9: .line 208
            new java.lang.StringBuilder
            dup
            ldc "Now enabled: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* instr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            aload 2 /* instr */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isCreated:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 4 // java.lang.Runnable r
        end local 2 // org.graalvm.polyglot.Instrument instr
        10: .line 203
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        11: .line 211
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        12: .line 212
            ldc "At least one Runnable found"
            aload 1 /* start */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/String;Ljava/lang/Object;)V
        13: .line 213
            return
        end local 1 // java.lang.Runnable start
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            3   14     1  start  Ljava/lang/Runnable;
            5   10     2  instr  Lorg/graalvm/polyglot/Instrument;
            6   10     4      r  Ljava/lang/Runnable;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void queryInstrumentsAfterDisposeDoesnotEnable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 217
            aload 0 /* this */
            invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual org.graalvm.polyglot.Engine$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Engine$Builder;
            invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
         1: .line 218
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.close:()V
         2: .line 219
            aconst_null
            astore 1 /* start */
        start local 1 // java.lang.Runnable start
         3: .line 220
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 12
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.lang.Runnable top java.util.Iterator
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 2 /* instr */
        start local 2 // org.graalvm.polyglot.Instrument instr
         5: .line 221
            ldc "Instrument is disabled"
            aload 0 /* this */
            aload 2 /* instr */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isInitialized:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         6: .line 223
            aload 2 /* instr */
            ldc Ljava/lang/Runnable;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 4 /* r */
        start local 4 // java.lang.Runnable r
         7: .line 224
            aload 4 /* r */
            ifnull 11
         8: .line 225
            aload 4 /* r */
            astore 1 /* start */
         9: .line 226
            aload 1 /* start */
            invokeinterface java.lang.Runnable.run:()V
        10: .line 227
            new java.lang.StringBuilder
            dup
            ldc "Now enabled: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* instr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            aload 2 /* instr */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isCreated:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        11: .line 229
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.lang.Runnable org.graalvm.polyglot.Instrument java.util.Iterator java.lang.Runnable
      StackMap stack:
            ldc "Instrument left disabled"
            aload 0 /* this */
            aload 2 /* instr */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isInitialized:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
        end local 4 // java.lang.Runnable r
        end local 2 // org.graalvm.polyglot.Instrument instr
        12: .line 220
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.lang.Runnable top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        13: .line 231
            ldc "No Runnable found"
            aload 1 /* start */
            invokestatic org.junit.Assert.assertNull:(Ljava/lang/String;Ljava/lang/Object;)V
        14: .line 232
            return
        end local 1 // java.lang.Runnable start
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            3   15     1  start  Ljava/lang/Runnable;
            5   12     2  instr  Lorg/graalvm/polyglot/Instrument;
            7   12     4      r  Ljava/lang/Runnable;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test(expected = Ljava/lang/IllegalStateException;)

  public void testDefaultId();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 239
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$MetadataInstrument2;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* descriptor1 */
        start local 1 // org.graalvm.polyglot.Instrument descriptor1
         1: .line 240
            ldc ""
            aload 1 /* descriptor1 */
            invokevirtual org.graalvm.polyglot.Instrument.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 241
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getVersion:()Ljava/lang/String;
            aload 1 /* descriptor1 */
            invokevirtual org.graalvm.polyglot.Instrument.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 242
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$MetadataInstrument2;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aload 1 /* descriptor1 */
            invokevirtual org.graalvm.polyglot.Instrument.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 243
            aload 0 /* this */
            aload 1 /* descriptor1 */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.isInitialized:(Lorg/graalvm/polyglot/Instrument;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         5: .line 244
            return
        end local 1 // org.graalvm.polyglot.Instrument descriptor1
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    6     1  descriptor1  Lorg/graalvm/polyglot/Instrument;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testMultipleInstruments();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 258
            aload 0 /* this */
            ldc ""
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         1: .line 260
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onCreateCounter:I
         2: .line 261
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onFinalizeCounter:I
         3: .line 262
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onDisposeCounter:I
         4: .line 263
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.constructor:I
         5: .line 264
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testMultipleInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument1 */
        start local 1 // org.graalvm.polyglot.Instrument instrument1
         6: .line 265
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.cleanup:()V
         7: .line 266
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.constructor:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         8: .line 267
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onCreateCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 268
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onFinalizeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 269
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onDisposeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        11: .line 271
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.getEngine:()Lorg/graalvm/polyglot/Engine;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
        12: .line 272
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onCreateCounter:I
        13: .line 273
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testMultipleInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument1 */
        14: .line 274
            aload 1 /* instrument1 */
            ldc Ljava/lang/Object;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        15: .line 275
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.constructor:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        16: .line 276
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onCreateCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        17: .line 277
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onFinalizeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        18: .line 278
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onDisposeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        19: .line 280
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testMultipleInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 2 /* instrument2 */
        start local 2 // org.graalvm.polyglot.Instrument instrument2
        20: .line 281
            aload 2 /* instrument2 */
            ldc Ljava/lang/Object;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        21: .line 282
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.constructor:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        22: .line 283
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onCreateCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        23: .line 284
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onFinalizeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        24: .line 285
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onDisposeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        25: .line 287
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.close:()V
        26: .line 288
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
        27: .line 289
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.constructor:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        28: .line 290
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onCreateCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        29: .line 291
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onFinalizeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        30: .line 292
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument.onDisposeCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        31: .line 293
            return
        end local 2 // org.graalvm.polyglot.Instrument instrument2
        end local 1 // org.graalvm.polyglot.Instrument instrument1
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   32     0         this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            6   32     1  instrument1  Lorg/graalvm/polyglot/Instrument;
           20   32     2  instrument2  Lorg/graalvm/polyglot/Instrument;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLanguageInstrumentationAndExceptions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 333
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage.installInstrumentsCounter:I
         1: .line 334
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage.createContextCounter:I
         2: .line 336
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            ldc "test-language-instrumentation-language"
            ldc "ROOT(EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 337
            ldc "expected exception"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         4: .line 338
            goto 7
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 1 /* ex */
        start local 1 // org.graalvm.polyglot.PolyglotException ex
         6: .line 340
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$MyLanguageException;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 1 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 1 // org.graalvm.polyglot.PolyglotException ex
         7: .line 342
      StackMap locals:
      StackMap stack:
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage.installInstrumentsCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         8: .line 343
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage.createContextCounter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 346
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        10: .line 347
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            6    7     1    ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentException1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 426
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.create:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$OnCreateExcInstrument
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$OnCreateExcInstrument.<init>:()V
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
         1: .line 427
            invokestatic org.junit.Assert.fail:()V
         2: .line 428
            goto 5
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         3: astore 1 /* e */
        start local 1 // org.graalvm.polyglot.PolyglotException e
         4: .line 429
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "MyLanguageException"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        end local 1 // org.graalvm.polyglot.PolyglotException e
         5: .line 431
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            4    5     1     e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           0     2       3  Class org.graalvm.polyglot.PolyglotException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentException2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 446
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* returnedExceptional */
        start local 1 // java.util.concurrent.atomic.AtomicInteger returnedExceptional
         1: .line 447
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 2 /* returnedValue */
        start local 2 // java.util.concurrent.atomic.AtomicInteger returnedValue
         2: .line 448
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$1
            dup
            aload 0 /* this */
            aload 2 /* returnedValue */
            aload 1 /* returnedExceptional */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$1.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         3: .line 463
            aload 0 /* this */
            ldc "ROOT(EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         4: .line 464
            ldc "No exception was thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         5: .line 465
            goto 8
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger
      StackMap stack: org.graalvm.polyglot.PolyglotException
         6: astore 3 /* ex */
        start local 3 // org.graalvm.polyglot.PolyglotException ex
         7: .line 466
            aload 3 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 3 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "MyLanguageException"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 3 // org.graalvm.polyglot.PolyglotException ex
         8: .line 468
      StackMap locals:
      StackMap stack:
            lconst_1
            aload 1 /* returnedExceptional */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 469
            lconst_0
            aload 2 /* returnedValue */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 470
            return
        end local 2 // java.util.concurrent.atomic.AtomicInteger returnedValue
        end local 1 // java.util.concurrent.atomic.AtomicInteger returnedExceptional
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   11     0                 this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  returnedExceptional  Ljava/util/concurrent/atomic/AtomicInteger;
            2   11     2        returnedValue  Ljava/util/concurrent/atomic/AtomicInteger;
            7    8     3                   ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           3     5       6  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentException3();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 478
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* returnedExceptional */
        start local 1 // java.util.concurrent.atomic.AtomicInteger returnedExceptional
         1: .line 479
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 2 /* onEnter */
        start local 2 // java.util.concurrent.atomic.AtomicInteger onEnter
         2: .line 480
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$2
            dup
            aload 0 /* this */
            aload 1 /* returnedExceptional */
            aload 2 /* onEnter */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$2.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         3: .line 495
            aload 0 /* this */
            ldc "ROOT(EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         4: .line 496
            ldc "No exception was thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         5: .line 497
            goto 8
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger
      StackMap stack: org.graalvm.polyglot.PolyglotException
         6: astore 3 /* ex */
        start local 3 // org.graalvm.polyglot.PolyglotException ex
         7: .line 498
            aload 3 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 3 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "MyLanguageException"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 3 // org.graalvm.polyglot.PolyglotException ex
         8: .line 500
      StackMap locals:
      StackMap stack:
            lconst_0
            aload 1 /* returnedExceptional */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 501
            lconst_1
            aload 2 /* onEnter */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 502
            return
        end local 2 // java.util.concurrent.atomic.AtomicInteger onEnter
        end local 1 // java.util.concurrent.atomic.AtomicInteger returnedExceptional
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   11     0                 this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  returnedExceptional  Ljava/util/concurrent/atomic/AtomicInteger;
            2   11     2              onEnter  Ljava/util/concurrent/atomic/AtomicInteger;
            7    8     3                   ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           3     5       6  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentException4();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 510
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceFilter$Builder;
            invokedynamic test()Ljava/util/function/Predicate;
              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:
                  (Ljava/lang/Object;)Z
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$0(Lcom/oracle/truffle/api/source/Source;)Z (6)
                  (Lcom/oracle/truffle/api/source/Source;)Z
            invokevirtual com.oracle.truffle.api.instrumentation.SourceFilter$Builder.sourceIs:(Ljava/util/function/Predicate;)Lcom/oracle/truffle/api/instrumentation/SourceFilter$Builder;
         1: .line 512
            invokevirtual com.oracle.truffle.api.instrumentation.SourceFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$3
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$3.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
         2: .line 516
            iconst_1
         3: .line 510
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceListener:(Lcom/oracle/truffle/api/instrumentation/SourceFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         4: .line 518
            aload 0 /* this */
            ldc "ROOT(EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 519
            ldc "No exception was thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         6: .line 520
            goto 9
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         7: astore 1 /* ex */
        start local 1 // org.graalvm.polyglot.PolyglotException ex
         8: .line 521
            aload 1 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "MyLanguageException"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 1 // org.graalvm.polyglot.PolyglotException ex
         9: .line 523
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            8    9     1    ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           4     6       7  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentException5();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 531
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokedynamic test()Ljava/util/function/Predicate;
              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:
                  (Ljava/lang/Object;)Z
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$1(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.rootNameIs:(Ljava/util/function/Predicate;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
         1: .line 533
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$4
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$4.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
         2: .line 531
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         3: .line 545
            aload 0 /* this */
            ldc "ROOT(EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         4: .line 546
            ldc "No exception was thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         5: .line 547
            goto 8
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         6: astore 1 /* ex */
        start local 1 // org.graalvm.polyglot.PolyglotException ex
         7: .line 548
            aload 1 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "MyLanguageException"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 1 // org.graalvm.polyglot.PolyglotException ex
         8: .line 550
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            7    8     1    ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           3     5       6  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLazyProbe1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 557
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.close:()V
         1: .line 558
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
         2: .line 559
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.<init>:()V
            astore 1 /* instrument */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1 instrument
         3: .line 560
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.newContext:()Lorg/graalvm/polyglot/Context;
            aload 1 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
         4: .line 562
            aload 0 /* this */
            ldc "ROOT(DEFINE(foo, EXPRESSION))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 563
            aload 0 /* this */
            ldc "ROOT(DEFINE(bar, ROOT(EXPRESSION,EXPRESSION)))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         6: .line 565
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.createCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         7: .line 566
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onEnter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         8: .line 567
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnValue:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 568
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnExceptional:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 570
            aload 0 /* this */
            ldc "ROOT(CALL(foo))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        11: .line 572
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.createCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        12: .line 573
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onEnter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        13: .line 574
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnValue:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        14: .line 575
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnExceptional:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        15: .line 577
            aload 0 /* this */
            ldc "ROOT(CALL(bar))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        16: .line 579
            ldc 3
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.createCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        17: .line 580
            ldc 3
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onEnter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        18: .line 581
            ldc 3
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnValue:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        19: .line 582
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnExceptional:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        20: .line 584
            aload 0 /* this */
            ldc "ROOT(CALL(bar))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        21: .line 586
            ldc 3
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.createCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        22: .line 587
            ldc 5
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onEnter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        23: .line 588
            ldc 5
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnValue:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        24: .line 589
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnExceptional:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        25: .line 591
            aload 0 /* this */
            ldc "ROOT(CALL(foo))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        26: .line 593
            ldc 3
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.createCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        27: .line 594
            ldc 6
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onEnter:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        28: .line 595
            ldc 6
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnValue:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        29: .line 596
            lconst_0
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1.onReturnExceptional:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        30: .line 598
            return
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1 instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   31     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            3   31     1  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestLazyProbe1;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testEnvParse1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 640
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.close:()V
         1: .line 641
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
         2: .line 642
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1.<init>:()V
            astore 1 /* instrument */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1 instrument
         3: .line 643
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.newContext:()Lorg/graalvm/polyglot/Context;
            aload 1 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
         4: .line 645
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 647
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1.onExpression:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         6: .line 648
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1.onStatement:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         7: .line 650
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         8: .line 652
            ldc 2
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1.onExpression:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 653
            ldc 2
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1.onStatement:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 654
            return
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1 instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            3   11     1  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestEnvParse1;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testEnvParseInline();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 709
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.close:()V
         1: .line 710
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
         2: .line 711
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline.<init>:()V
            astore 1 /* instrument */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline instrument
         3: .line 712
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.newContext:()Lorg/graalvm/polyglot/Context;
            aload 1 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
         4: .line 714
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 716
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline.onExpression:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         6: .line 717
            lconst_1
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline.onStatement:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         7: .line 719
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         8: .line 721
            ldc 2
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline.onExpression:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 722
            ldc 2
            aload 1 /* instrument */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline.onStatement:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 723
            return
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            3   11     1  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestEnvParseInline;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testParseInlineDefault();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 873
            ldc "testNoParseInline-lang"
            ldc "STATEMENT"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 874
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.STATEMENT:Ljava/lang/Class;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$5
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$5.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         2: .line 886
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         3: .line 887
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         4: .line 888
            return
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    5     1  source  Lorg/graalvm/polyglot/Source;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLegacyReceiver();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 905
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester.<init>:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
            astore 1 /* tester */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester tester
         1: .line 906
            ldc "instrumentation-test-language"
         2: .line 907
            ldc "ROOT(DEFINE(foo1, ROOT(STATEMENT)),DEFINE(foo2, ROOT(CALL(foo1), STATEMENT)),CALL(foo1),CALL_WITH(foo2, 42),CALL_WITH(foo1, 43))"
         3: .line 906
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         4: .line 912
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            aload 1 /* tester */
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         5: .line 913
            aload 0 /* this */
            aload 2 /* source */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         6: .line 914
            aload 1 /* tester */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            aconst_null
            aastore
            dup
            iconst_1
            aconst_null
            aastore
            dup
            iconst_2
            ldc "42"
            aastore
            dup
            iconst_3
            ldc "43"
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester.assertReceivers:([Ljava/lang/String;)V
         7: .line 915
            return
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester tester
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    8     1  tester  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$ReceiverLegacyTester;
            4    8     2  source  Lorg/graalvm/polyglot/Source;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testReceiver();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 968
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester.<init>:(Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
            astore 1 /* tester */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester tester
         1: .line 969
            ldc "instrumentation-test-language"
         2: .line 970
            ldc "ROOT(DEFINE(foo1, ROOT(STATEMENT)),DEFINE(foo2, ROOT(CALL(foo1), STATEMENT)),CALL(foo1),CALL_WITH(foo2, 42),CALL_WITH(foo1, 43))"
         3: .line 969
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         4: .line 975
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            aload 1 /* tester */
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         5: .line 976
            aload 0 /* this */
            aload 2 /* source */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         6: .line 977
            aload 1 /* tester */
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            aconst_null
            aastore
            dup
            iconst_1
            aconst_null
            aastore
            dup
            iconst_2
            ldc "42"
            aastore
            dup
            iconst_3
            ldc "43"
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester.assertReceivers:([Ljava/lang/String;)V
         7: .line 978
            return
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester tester
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    8     1  tester  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$ReceiverTester;
            4    8     2  source  Lorg/graalvm/polyglot/Source;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testNearestExecutionNode();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1035
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester.<init>:()V
            astore 1 /* tester */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester tester
         1: .line 1036
            ldc "instrumentation-test-language"
         2: .line 1037
            ldc "ROOT(DEFINE(foo1, ROOT(STATEMENT, VARIABLE(a, 10), STATEMENT, EXPRESSION)),DEFINE(foo2, ROOT(EXPRESSION, CALL(foo1), STATEMENT, STATEMENT(EXPRESSION))))"
         3: .line 1036
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         4: .line 1039
            aload 1 /* tester */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            invokedynamic apply()Ljava/util/function/BiFunction;
              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:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$2(Ljava/lang/Integer;Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/Boolean; (6)
                  (Ljava/lang/Integer;Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/Boolean;
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester.set:(Ljava/lang/Class;Ljava/util/function/BiFunction;)V
         5: .line 1051
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$6
            dup
            aload 0 /* this */
            aload 1 /* tester */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$6.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$NearestExecutionNodeTester;)V
         6: .line 1078
            iconst_1
         7: .line 1051
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecuteSourceListener:(Lcom/oracle/truffle/api/instrumentation/SourceFilter;Lcom/oracle/truffle/api/instrumentation/ExecuteSourceListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         8: .line 1079
            aload 0 /* this */
            aload 2 /* source */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         9: .line 1080
            aload 1 /* tester */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester.getFailures:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertNull:(Ljava/lang/Object;)V
        10: .line 1081
            return
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester tester
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  tester  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$NearestExecutionNodeTester;
            4   11     2  source  Lorg/graalvm/polyglot/Source;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentAll();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1121
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* onStatement */
        start local 1 // java.util.concurrent.atomic.AtomicInteger onStatement
         1: .line 1122
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$7
            dup
            aload 0 /* this */
            aload 1 /* onStatement */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$7.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         2: .line 1134
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         3: .line 1137
            ldc 2
            aload 1 /* onStatement */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 1138
            return
        end local 1 // java.util.concurrent.atomic.AtomicInteger onStatement
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    5     1  onStatement  Ljava/util/concurrent/atomic/AtomicInteger;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentNonInstrumentable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1145
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* onStatement */
        start local 1 // java.util.concurrent.atomic.AtomicInteger onStatement
         1: .line 1146
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$8
            dup
            aload 0 /* this */
            aload 1 /* onStatement */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$8.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         2: .line 1158
            aload 0 /* this */
            ldc "DEFINE(foo, ROOT())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         3: .line 1161
            lconst_1
            aload 1 /* onStatement */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 1162
            return
        end local 1 // java.util.concurrent.atomic.AtomicInteger onStatement
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    5     1  onStatement  Ljava/util/concurrent/atomic/AtomicInteger;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testOutputConsumer();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1168
            aload 0 /* this */
            ldc "PRINT(OUT, InitialToStdOut)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* rout */
        start local 1 // java.lang.String rout
         1: .line 1169
            ldc "InitialToStdOut"
            aload 1 /* rout */
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 1170
            aload 0 /* this */
            ldc "PRINT(ERR, InitialToStdErr)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         3: .line 1171
            ldc "InitialToStdErr"
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 1172
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         5: .line 1175
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testOutputConsumerArray"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
         6: .line 1176
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testOutputConsumerPiped"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
         7: .line 1177
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(OUT, OutputToStdOut)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         8: .line 1178
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(ERR, OutputToStdErr)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         9: .line 1180
            ldc "OutputToStdOut"
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.getOut:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 1181
            ldc "OutputToStdOut"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getOut:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 1182
            ldc "OutputToStdErr"
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.getErr:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 1183
            ldc "OutputToStdErr"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getErr:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 1184
            bipush 100
            invokestatic java.nio.CharBuffer.allocate:(I)Ljava/nio/CharBuffer;
            astore 2 /* buff */
        start local 2 // java.nio.CharBuffer buff
        14: .line 1185
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromOut:Ljava/io/Reader;
            aload 2 /* buff */
            invokevirtual java.io.Reader.read:(Ljava/nio/CharBuffer;)I
            pop
        15: .line 1186
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.flip:()Ljava/nio/CharBuffer;
            pop
        16: .line 1187
            ldc "OutputToStdOut"
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        17: .line 1188
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.rewind:()Ljava/nio/CharBuffer;
            pop
        18: .line 1189
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromErr:Ljava/io/Reader;
            aload 2 /* buff */
            invokevirtual java.io.Reader.read:(Ljava/nio/CharBuffer;)I
            pop
        19: .line 1190
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.flip:()Ljava/nio/CharBuffer;
            pop
        20: .line 1191
            ldc "OutputToStdErr"
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        21: .line 1192
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.rewind:()Ljava/nio/CharBuffer;
            pop
        22: .line 1195
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromErr:Ljava/io/Reader;
            invokevirtual java.io.Reader.close:()V
        23: .line 1196
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(OUT, MoreOutputToStdOut)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
        24: .line 1197
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(ERR, MoreOutputToStdErr)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
        25: .line 1198
            ldc "OutputToStdOutMoreOutputToStdOut"
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.out:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        26: .line 1199
            ldc "OutputToStdOutMoreOutputToStdOut"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getOut:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        27: .line 1200
            ldc "java.lang.Exception: Output operation write(B[II) failed for java.io.PipedOutputStream"
            astore 3 /* errorMsg */
        start local 3 // java.lang.String errorMsg
        28: .line 1201
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "OutputToStdErr"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* errorMsg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        29: .line 1202
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            ldc "MoreOutputToStdErr"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        30: .line 1203
            ldc "OutputToStdErrMoreOutputToStdErr"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getErr:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        31: .line 1204
            aload 2 /* buff */
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.capacity:()I
            invokevirtual java.nio.CharBuffer.limit:(I)Ljava/nio/CharBuffer;
            pop
        32: .line 1205
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromOut:Ljava/io/Reader;
            aload 2 /* buff */
            invokevirtual java.io.Reader.read:(Ljava/nio/CharBuffer;)I
            pop
        33: .line 1206
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.flip:()Ljava/nio/CharBuffer;
            pop
        34: .line 1207
            ldc "MoreOutputToStdOut"
            aload 2 /* buff */
            invokevirtual java.nio.CharBuffer.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        35: .line 1208
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.out:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        36: .line 1209
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        37: .line 1212
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(ERR, EvenMoreOutputToStdErr)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
        38: .line 1213
            ldc "EvenMoreOutputToStdErr"
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        39: .line 1214
            ldc "OutputToStdErrMoreOutputToStdErrEvenMoreOutputToStdErr"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getErr:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        40: .line 1217
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.teardown:()V
        41: .line 1218
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setup:()V
        42: .line 1219
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.out:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        43: .line 1220
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        44: .line 1221
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(OUT, FinalOutputToStdOut)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
        45: .line 1222
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "PRINT(ERR, FinalOutputToStdErr)"
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.lines:([Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
        46: .line 1223
            ldc "FinalOutputToStdOut"
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.out:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        47: .line 1224
            ldc "FinalOutputToStdErr"
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.err:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        48: .line 1226
            ldc "OutputToStdOutMoreOutputToStdOut"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getOut:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        49: .line 1227
            ldc "OutputToStdErrMoreOutputToStdErrEvenMoreOutputToStdErr"
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.getErr:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // java.lang.String errorMsg
        end local 2 // java.nio.CharBuffer buff
        end local 1 // java.lang.String rout
        50: .line 1228
            goto 59
      StackMap locals:
      StackMap stack: java.lang.Throwable
        51: astore 4
        52: .line 1229
            new java.io.PipedOutputStream
            dup
            invokespecial java.io.PipedOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.out:Ljava/io/PipedOutputStream;
        53: .line 1230
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromOut:Ljava/io/Reader;
        54: .line 1231
            new java.io.PipedOutputStream
            dup
            invokespecial java.io.PipedOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.err:Ljava/io/PipedOutputStream;
        55: .line 1232
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromErr:Ljava/io/Reader;
        56: .line 1233
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.out:Ljava/io/ByteArrayOutputStream;
        57: .line 1234
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.err:Ljava/io/ByteArrayOutputStream;
        58: .line 1235
            aload 4
            athrow
        59: .line 1229
      StackMap locals:
      StackMap stack:
            new java.io.PipedOutputStream
            dup
            invokespecial java.io.PipedOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.out:Ljava/io/PipedOutputStream;
        60: .line 1230
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromOut:Ljava/io/Reader;
        61: .line 1231
            new java.io.PipedOutputStream
            dup
            invokespecial java.io.PipedOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.err:Ljava/io/PipedOutputStream;
        62: .line 1232
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped.fromErr:Ljava/io/Reader;
        63: .line 1233
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.out:Ljava/io/ByteArrayOutputStream;
        64: .line 1234
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray.err:Ljava/io/ByteArrayOutputStream;
        65: .line 1236
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   66     0      this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   50     1      rout  Ljava/lang/String;
           14   50     2      buff  Ljava/nio/CharBuffer;
           28   50     3  errorMsg  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0    51      51  any
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testKillExceptionOnEnter();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1298
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* returnExceptionalCount */
        start local 1 // java.util.concurrent.atomic.AtomicInteger returnExceptionalCount
         1: .line 1299
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$9
            dup
            aload 0 /* this */
            aload 1 /* returnExceptionalCount */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$9.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         2: .line 1312
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         3: .line 1313
            ldc "KillException in onEnter() cancels engine execution"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         4: .line 1314
            goto 7
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 2 /* ex */
        start local 2 // org.graalvm.polyglot.PolyglotException ex
         6: .line 1315
            aload 2 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 2 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$MyKillException;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 2 // org.graalvm.polyglot.PolyglotException ex
         7: .line 1317
      StackMap locals:
      StackMap stack:
            ldc "KillException is not an execution event"
            lconst_0
            aload 1 /* returnExceptionalCount */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
         8: .line 1318
            return
        end local 1 // java.util.concurrent.atomic.AtomicInteger returnExceptionalCount
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    9     0                    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    9     1  returnExceptionalCount  Ljava/util/concurrent/atomic/AtomicInteger;
            6    7     2                      ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testKillExceptionOnReturnValue();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1322
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* returnExceptionalCount */
        start local 1 // java.util.concurrent.atomic.AtomicInteger returnExceptionalCount
         1: .line 1323
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$10
            dup
            aload 0 /* this */
            aload 1 /* returnExceptionalCount */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$10.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         2: .line 1336
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         3: .line 1337
            ldc "KillException in onReturnValue() cancels engine execution"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         4: .line 1338
            goto 7
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 2 /* ex */
        start local 2 // org.graalvm.polyglot.PolyglotException ex
         6: .line 1339
            aload 2 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 2 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$MyKillException;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 2 // org.graalvm.polyglot.PolyglotException ex
         7: .line 1341
      StackMap locals:
      StackMap stack:
            ldc "KillException is not an execution event"
            lconst_0
            aload 1 /* returnExceptionalCount */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
         8: .line 1342
            return
        end local 1 // java.util.concurrent.atomic.AtomicInteger returnExceptionalCount
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    9     0                    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    9     1  returnExceptionalCount  Ljava/util/concurrent/atomic/AtomicInteger;
            6    7     2                      ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testUsedTagNotRequired1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1350
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testUsedTagNotRequired1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
         1: .line 1351
            aload 0 /* this */
            ldc "ROOT()"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         2: .line 1352
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()
      org.junit.Ignore()

  public void testQueryTags1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1391
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testIsNodeTaggedWith1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         1: .line 1392
            aload 1 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.Instrumenter
            astore 2 /* instrumenter */
        start local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
         2: .line 1394
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.expressionNode:Lcom/oracle/truffle/api/nodes/Node;
         3: .line 1395
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.statementNode:Lcom/oracle/truffle/api/nodes/Node;
         4: .line 1397
            aload 2 /* instrumenter */
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$11
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$11.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
         5: .line 1398
            invokeinterface java.util.Set.isEmpty:()Z
         6: .line 1397
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 1400
            aload 0 /* this */
            ldc "STATEMENT(EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         8: .line 1402
            aload 2 /* instrumenter */
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.expressionNode:Lcom/oracle/truffle/api/nodes/Node;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assertTags:(Ljava/util/Set;[Ljava/lang/Class;)V
         9: .line 1403
            aload 2 /* instrumenter */
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.statementNode:Lcom/oracle/truffle/api/nodes/Node;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.STATEMENT:Ljava/lang/Class;
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assertTags:(Ljava/util/Set;[Ljava/lang/Class;)V
        10: .line 1406
            aload 2 /* instrumenter */
            aconst_null
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
            pop
        11: .line 1407
            invokestatic org.junit.Assert.fail:()V
        12: .line 1408
            goto 14
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Instrument com.oracle.truffle.api.instrumentation.Instrumenter
      StackMap stack: java.lang.NullPointerException
        13: pop
        14: .line 1410
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   15     1    instrument  Lorg/graalvm/polyglot/Instrument;
            2   15     2  instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
      Exception table:
        from    to  target  type
          10    12      13  Class java.lang.NullPointerException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void assertTags(java.util.Set<java.lang.Class<?>>, java.lang.Class<?>[]);
    descriptor: (Ljava/util/Set;[Ljava/lang/Class;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // java.util.Set tags
        start local 1 // java.lang.Class[] expectedTags
         0: .line 1413
            aload 1 /* expectedTags */
            arraylength
            i2l
            aload 0 /* tags */
            invokeinterface java.util.Set.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         1: .line 1414
            aload 1 /* expectedTags */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: java.util.Set java.lang.Class[] top int int java.lang.Class[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* clazz */
        start local 2 // java.lang.Class clazz
         3: .line 1415
            new java.lang.StringBuilder
            dup
            ldc "Tag: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* tags */
            aload 2 /* clazz */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 2 // java.lang.Class clazz
         4: .line 1414
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 2
         6: .line 1417
            return
        end local 1 // java.lang.Class[] expectedTags
        end local 0 // java.util.Set tags
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          tags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            0    7     1  expectedTags  [Ljava/lang/Class;
            3    4     2         clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/util/Set<Ljava/lang/Class<*>;>;[Ljava/lang/Class<*>;)V
    MethodParameters:
              Name  Flags
      tags          
      expectedTags  

  public void testQueryTags2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1424
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testIsNodeTaggedWith1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         1: .line 1425
            aload 0 /* this */
            aload 1 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
         2: .line 1426
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.expressionNode:Lcom/oracle/truffle/api/nodes/Node;
         3: .line 1427
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.statementNode:Lcom/oracle/truffle/api/nodes/Node;
         4: .line 1428
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1Language.instrumenter:Lcom/oracle/truffle/api/instrumentation/Instrumenter;
         5: .line 1430
            ldc "testIsNodeTaggedWith1-lang"
            ldc "STATEMENT(EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* otherLanguageSource */
        start local 2 // org.graalvm.polyglot.Source otherLanguageSource
         6: .line 1431
            aload 0 /* this */
            aload 2 /* otherLanguageSource */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         7: .line 1433
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1Language.instrumenter:Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            astore 3 /* instrumenter */
        start local 3 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
         8: .line 1435
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.expressionNode:Lcom/oracle/truffle/api/nodes/Node;
            astore 4 /* languageExpression */
        start local 4 // com.oracle.truffle.api.nodes.Node languageExpression
         9: .line 1436
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.statementNode:Lcom/oracle/truffle/api/nodes/Node;
            astore 5 /* languageStatement */
        start local 5 // com.oracle.truffle.api.nodes.Node languageStatement
        10: .line 1438
            aload 3 /* instrumenter */
            aload 4 /* languageExpression */
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assertTags:(Ljava/util/Set;[Ljava/lang/Class;)V
        11: .line 1439
            aload 3 /* instrumenter */
            aload 5 /* languageStatement */
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.STATEMENT:Ljava/lang/Class;
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assertTags:(Ljava/util/Set;[Ljava/lang/Class;)V
        12: .line 1441
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.expressionNode:Lcom/oracle/truffle/api/nodes/Node;
        13: .line 1442
            aconst_null
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.statementNode:Lcom/oracle/truffle/api/nodes/Node;
        14: .line 1444
            aload 0 /* this */
            ldc "EXPRESSION"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        15: .line 1447
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.expressionNode:Lcom/oracle/truffle/api/nodes/Node;
            astore 6 /* otherLanguageExpression */
        start local 6 // com.oracle.truffle.api.nodes.Node otherLanguageExpression
        16: .line 1449
            aload 3 /* instrumenter */
            aload 6 /* otherLanguageExpression */
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.queryTags:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/Set;
            pop
        17: .line 1450
            invokestatic org.junit.Assert.fail:()V
        18: .line 1451
            goto 20
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Instrument org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.Instrumenter com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.nodes.Node
      StackMap stack: java.lang.IllegalArgumentException
        19: pop
        20: .line 1454
      StackMap locals:
      StackMap stack:
            return
        end local 6 // com.oracle.truffle.api.nodes.Node otherLanguageExpression
        end local 5 // com.oracle.truffle.api.nodes.Node languageStatement
        end local 4 // com.oracle.truffle.api.nodes.Node languageExpression
        end local 3 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 2 // org.graalvm.polyglot.Source otherLanguageSource
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   21     0                     this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   21     1               instrument  Lorg/graalvm/polyglot/Instrument;
            6   21     2      otherLanguageSource  Lorg/graalvm/polyglot/Source;
            8   21     3             instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            9   21     4       languageExpression  Lcom/oracle/truffle/api/nodes/Node;
           10   21     5        languageStatement  Lcom/oracle/truffle/api/nodes/Node;
           16   21     6  otherLanguageExpression  Lcom/oracle/truffle/api/nodes/Node;
      Exception table:
        from    to  target  type
          16    18      19  Class java.lang.IllegalArgumentException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testInstrumentsWhenForked();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1458
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testIsNodeTaggedWith1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         1: .line 1459
            aload 0 /* this */
            aload 1 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
         2: .line 1460
            aload 1 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestIsNodeTaggedWith1;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1
            astore 2 /* service */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1 service
         3: .line 1462
            lconst_1
            aload 2 /* service */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.onCreateCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 1464
            ldc "testIsNodeTaggedWith1-lang"
            ldc "STATEMENT(EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 3 /* otherLanguageSource */
        start local 3 // org.graalvm.polyglot.Source otherLanguageSource
         5: .line 1465
            aload 0 /* this */
            aload 3 /* otherLanguageSource */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         6: .line 1467
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.newContext:()Lorg/graalvm/polyglot/Context;
            astore 4 /* forked */
        start local 4 // org.graalvm.polyglot.Context forked
         7: .line 1468
            lconst_1
            aload 2 /* service */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.onCreateCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         8: .line 1470
            aload 4 /* forked */
            invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            astore 5 /* instruments */
        start local 5 // java.util.Map instruments
         9: .line 1471
            aload 1 /* instrument */
            aload 5 /* instruments */
            ldc "testIsNodeTaggedWith1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 1472
            aload 2 /* service */
            aload 5 /* instruments */
            ldc "testIsNodeTaggedWith1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestIsNodeTaggedWith1;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 1474
            aload 5 /* instruments */
            invokeinterface java.util.Map.size:()I
            i2l
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        12: .line 1475
            aload 5 /* instruments */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 15
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Instrument com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1 org.graalvm.polyglot.Source org.graalvm.polyglot.Context java.util.Map top java.util.Iterator
      StackMap stack:
        13: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* key */
        start local 6 // java.lang.String key
        14: .line 1476
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            aload 6 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 5 /* instruments */
            aload 6 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // java.lang.String key
        15: .line 1475
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 1479
            lconst_0
            aload 2 /* service */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.onDisposeCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        17: .line 1480
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.cleanup:()V
        18: .line 1481
            lconst_0
            aload 2 /* service */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.onDisposeCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        19: .line 1482
            aload 4 /* forked */
            invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.close:()V
        20: .line 1484
            lconst_1
            aload 2 /* service */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1.onDisposeCalls:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        21: .line 1485
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
        22: .line 1486
            return
        end local 5 // java.util.Map instruments
        end local 4 // org.graalvm.polyglot.Context forked
        end local 3 // org.graalvm.polyglot.Source otherLanguageSource
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1 service
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   23     0                 this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   23     1           instrument  Lorg/graalvm/polyglot/Instrument;
            3   23     2              service  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestIsNodeTaggedWith1;
            5   23     3  otherLanguageSource  Lorg/graalvm/polyglot/Source;
            7   23     4               forked  Lorg/graalvm/polyglot/Context;
            9   23     5          instruments  Ljava/util/Map<Ljava/lang/String;+Lorg/graalvm/polyglot/Instrument;>;
           14   15     6                  key  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testNullEventNode();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1560
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 1 /* onNodeCreateCalls */
        start local 1 // java.util.concurrent.atomic.AtomicInteger onNodeCreateCalls
         1: .line 1561
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 2 /* onNodeEnterCalls */
        start local 2 // java.util.concurrent.atomic.AtomicInteger onNodeEnterCalls
         2: .line 1562
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.STATEMENT:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.EXPRESSION:Ljava/lang/Class;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
         3: .line 1563
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$12
            dup
            aload 0 /* this */
            aload 1 /* onNodeCreateCalls */
            aload 2 /* onNodeEnterCalls */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$12.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
         4: .line 1562
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         5: .line 1582
            lconst_0
            aload 1 /* onNodeCreateCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         6: .line 1583
            lconst_0
            aload 2 /* onNodeEnterCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         7: .line 1585
            aload 0 /* this */
            ldc "STATEMENT(EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         8: .line 1587
            aload 1 /* onNodeCreateCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            aload 1 /* onNodeCreateCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iconst_2
            if_icmplt 9
            iconst_1
            goto 10
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger
      StackMap stack: java.lang.String
         9: iconst_0
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger
      StackMap stack: java.lang.String int
        10: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        11: .line 1588
            lconst_1
            aload 2 /* onNodeEnterCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        12: .line 1589
            aload 1 /* onNodeCreateCalls */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
        13: .line 1590
            aload 2 /* onNodeEnterCalls */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
        14: .line 1592
            aload 0 /* this */
            ldc "ROOT(STATEMENT(), EXPRESSION(), STATEMENT(), EXPRESSION())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
        15: .line 1594
            aload 1 /* onNodeCreateCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            aload 1 /* onNodeCreateCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iconst_4
            if_icmplt 16
            iconst_1
            goto 17
      StackMap locals:
      StackMap stack: java.lang.String
        16: iconst_0
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicInteger java.util.concurrent.atomic.AtomicInteger
      StackMap stack: java.lang.String int
        17: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        18: .line 1595
            ldc 2
            aload 2 /* onNodeEnterCalls */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        19: .line 1596
            return
        end local 2 // java.util.concurrent.atomic.AtomicInteger onNodeEnterCalls
        end local 1 // java.util.concurrent.atomic.AtomicInteger onNodeCreateCalls
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   20     0               this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   20     1  onNodeCreateCalls  Ljava/util/concurrent/atomic/AtomicInteger;
            2   20     2   onNodeEnterCalls  Ljava/util/concurrent/atomic/AtomicInteger;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testRootBodies();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1600
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* tags */
        start local 1 // java.lang.StringBuilder tags
         1: .line 1601
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootBodyTag;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
         2: .line 1602
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$13
            dup
            aload 0 /* this */
            aload 1 /* tags */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$13.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/lang/StringBuilder;)V
         3: .line 1601
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         4: .line 1633
            ldc ""
            aload 1 /* tags */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 1635
            aload 0 /* this */
            ldc "ROOT(STATEMENT())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         6: .line 1637
            ldc "InRBOutBR"
            aload 1 /* tags */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 1638
            aload 1 /* tags */
            iconst_0
            aload 1 /* tags */
            invokevirtual java.lang.StringBuilder.length:()I
            invokevirtual java.lang.StringBuilder.delete:(II)Ljava/lang/StringBuilder;
            pop
         8: .line 1640
            aload 0 /* this */
            ldc "ROOT(STATEMENT(), ROOT_BODY(EXPRESSION()), EXPRESSION())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         9: .line 1642
            ldc "InRInBOutBOutR"
            aload 1 /* tags */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 1643
            return
        end local 1 // java.lang.StringBuilder tags
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  tags  Ljava/lang/StringBuilder;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private void setupEngine(com.oracle.truffle.api.test.polyglot.ProxyInstrument, org.graalvm.polyglot.Source, boolean);
    descriptor: (Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;Lorg/graalvm/polyglot/Source;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
        start local 1 // com.oracle.truffle.api.test.polyglot.ProxyInstrument instrument
        start local 2 // org.graalvm.polyglot.Source initSource
        start local 3 // boolean runInitAfterExec
         0: .line 1646
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.teardown:()V
         1: .line 1647
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.envConfig:Ljava/util/Map;
            ldc "initSource"
            aload 2 /* initSource */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 1648
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.envConfig:Ljava/util/Map;
            ldc "runInitAfterExec"
            iload 3 /* runInitAfterExec */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 1649
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.newContext:()Lorg/graalvm/polyglot/Context;
            aload 1 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
         4: .line 1650
            return
        end local 3 // boolean runInitAfterExec
        end local 2 // org.graalvm.polyglot.Source initSource
        end local 1 // com.oracle.truffle.api.test.polyglot.ProxyInstrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            0    5     1        instrument  Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;
            0    5     2        initSource  Lorg/graalvm/polyglot/Source;
            0    5     3  runInitAfterExec  Z
    MethodParameters:
                  Name  Flags
      instrument        
      initSource        
      runInitAfterExec  

  public void testAccessInstruments();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1654
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testAccessInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         1: .line 1655
            aload 1 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments
            astore 2 /* access */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments access
         2: .line 1657
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstruments:()Ljava/util/Map;
            ldc "testAccessInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.InstrumentInfo
            astore 3 /* info */
        start local 3 // com.oracle.truffle.api.InstrumentInfo info
         3: .line 1658
            aload 3 /* info */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         4: .line 1659
            ldc "testAccessInstruments"
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 1660
            ldc "name"
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 1661
            ldc "version"
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 1664
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 3 /* info */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            pop
         8: .line 1665
            invokestatic org.junit.Assert.fail:()V
         9: .line 1666
            goto 11
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Instrument com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments com.oracle.truffle.api.InstrumentInfo
      StackMap stack: java.lang.IllegalArgumentException
        10: pop
        11: .line 1670
      StackMap locals:
      StackMap stack:
            iconst_0
            putstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther.initializedCount:I
        12: .line 1672
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstruments:()Ljava/util/Map;
            ldc "testAccessInstrumentsOther"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.InstrumentInfo
            astore 4 /* other */
        start local 4 // com.oracle.truffle.api.InstrumentInfo other
        13: .line 1673
            aload 4 /* other */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
        14: .line 1674
            ldc "testAccessInstrumentsOther"
            aload 4 /* other */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        15: .line 1675
            ldc "otherName"
            aload 4 /* other */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 1676
            ldc "otherVersion"
            aload 4 /* other */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        17: .line 1678
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther.initializedCount:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        18: .line 1681
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 4 /* other */
            ldc Ljava/lang/Object;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNull:(Ljava/lang/Object;)V
        19: .line 1682
            lconst_0
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther.initializedCount:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        20: .line 1685
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 4 /* other */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstrumentsOther;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
        21: .line 1686
            lconst_1
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther.initializedCount:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        22: .line 1689
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 5 /* onCallsLogger */
        start local 5 // java.lang.StringBuilder onCallsLogger
        23: .line 1690
            aload 1 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments
            aload 5 /* onCallsLogger */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.onCallsLogger:Ljava/lang/StringBuilder;
        24: .line 1691
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 4 /* other */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstrumentsOther;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther
            aload 5 /* onCallsLogger */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther.onCallsLogger:Ljava/lang/StringBuilder;
        25: .line 1692
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.teardown:()V
        26: .line 1693
            ldc "FFDD"
            aload 5 /* onCallsLogger */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        27: .line 1694
            return
        end local 5 // java.lang.StringBuilder onCallsLogger
        end local 4 // com.oracle.truffle.api.InstrumentInfo other
        end local 3 // com.oracle.truffle.api.InstrumentInfo info
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments access
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   28     0           this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   28     1     instrument  Lorg/graalvm/polyglot/Instrument;
            2   28     2         access  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            3   28     3           info  Lcom/oracle/truffle/api/InstrumentInfo;
           13   28     4          other  Lcom/oracle/truffle/api/InstrumentInfo;
           23   28     5  onCallsLogger  Ljava/lang/StringBuilder;
      Exception table:
        from    to  target  type
           7     9      10  Class java.lang.IllegalArgumentException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAccessLanguages();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1698
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testAccessInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         1: .line 1699
            aload 1 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments
            astore 2 /* access */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments access
         2: .line 1701
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getLanguages:()Ljava/util/Map;
            ldc "instrumentation-test-language"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.LanguageInfo
            astore 3 /* info */
        start local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
         3: .line 1702
            aload 3 /* info */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         4: .line 1703
            ldc "instrumentation-test-language"
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.nodes.LanguageInfo.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 1704
            ldc "2.0"
            aload 3 /* info */
            invokevirtual com.oracle.truffle.api.nodes.LanguageInfo.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 1706
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         7: .line 1707
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 3 /* info */
            ldc Lcom/oracle/truffle/api/instrumentation/test/SpecialService;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         8: .line 1708
            ldc ".titl"
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 3 /* info */
            ldc Lcom/oracle/truffle/api/instrumentation/test/SpecialService;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.SpecialService
            invokeinterface com.oracle.truffle.api.instrumentation.test.SpecialService.fileExtension:()Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 1709
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        10: .line 1710
            return
        end local 3 // com.oracle.truffle.api.nodes.LanguageInfo info
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments access
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  instrument  Lorg/graalvm/polyglot/Instrument;
            2   11     2      access  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            3   11     3        info  Lcom/oracle/truffle/api/nodes/LanguageInfo;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAccessInternalInstruments();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1771
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testAccessInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* instrument */
        start local 1 // org.graalvm.polyglot.Instrument instrument
         1: .line 1772
            aload 1 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments
            astore 2 /* access */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments access
         2: .line 1773
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstruments:()Ljava/util/Map;
            ldc "testAccessInternalInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.InstrumentInfo
            astore 3 /* internalInfo */
        start local 3 // com.oracle.truffle.api.InstrumentInfo internalInfo
         3: .line 1774
            aload 3 /* internalInfo */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         4: .line 1775
            aload 2 /* access */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 3 /* internalInfo */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInternalInstruments;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInternalInstruments
            astore 4 /* internal */
        start local 4 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInternalInstruments internal
         5: .line 1776
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.teardown:()V
         6: .line 1777
            ldc "CFD"
            aload 4 /* internal */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInternalInstruments.onCallsLogger:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 1778
            return
        end local 4 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInternalInstruments internal
        end local 3 // com.oracle.truffle.api.InstrumentInfo internalInfo
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments access
        end local 1 // org.graalvm.polyglot.Instrument instrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    8     1    instrument  Lorg/graalvm/polyglot/Instrument;
            2    8     2        access  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            3    8     3  internalInfo  Lcom/oracle/truffle/api/InstrumentInfo;
            5    8     4      internal  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInternalInstruments;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAccessInstrumentFromLanguage();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1805
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            ldc "instrumentation-test-language"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         1: .line 1806
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.currentEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            astore 1 /* env */
        start local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
         2: .line 1807
            aload 1 /* env */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInternalLanguages:()Ljava/util/Map;
            ldc "instrumentation-test-language"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.LanguageInfo
            astore 2 /* langInfo */
        start local 2 // com.oracle.truffle.api.nodes.LanguageInfo langInfo
         3: .line 1808
            aload 2 /* langInfo */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         4: .line 1809
            ldc "instrumentation-test-language"
            aload 2 /* langInfo */
            invokevirtual com.oracle.truffle.api.nodes.LanguageInfo.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 1810
            ldc "2.0"
            aload 2 /* langInfo */
            invokevirtual com.oracle.truffle.api.nodes.LanguageInfo.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 1812
            aload 1 /* env */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInstruments:()Ljava/util/Map;
            ldc "testAccessInstruments"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.InstrumentInfo
            astore 3 /* instrInfo */
        start local 3 // com.oracle.truffle.api.InstrumentInfo instrInfo
         7: .line 1813
            aload 3 /* instrInfo */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         8: .line 1814
            ldc "testAccessInstruments"
            aload 3 /* instrInfo */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getId:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 1815
            ldc "name"
            aload 3 /* instrInfo */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 1816
            ldc "version"
            aload 3 /* instrInfo */
            invokevirtual com.oracle.truffle.api.InstrumentInfo.getVersion:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 1818
            aload 1 /* env */
            aload 3 /* instrInfo */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAccessInstruments;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
        12: .line 1819
            aload 1 /* env */
            aload 3 /* instrInfo */
            ldc Lcom/oracle/truffle/api/instrumentation/test/SpecialService;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookup:(Lcom/oracle/truffle/api/InstrumentInfo;Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNull:(Ljava/lang/Object;)V
        13: .line 1823
            aload 1 /* env */
            aload 2 /* langInfo */
            ldc Lcom/oracle/truffle/api/instrumentation/test/SpecialService;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookup:(Lcom/oracle/truffle/api/nodes/LanguageInfo;Ljava/lang/Class;)Ljava/lang/Object;
            pop
        14: .line 1824
            invokestatic org.junit.Assert.fail:()V
        15: .line 1825
            goto 17
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest com.oracle.truffle.api.TruffleLanguage$Env com.oracle.truffle.api.nodes.LanguageInfo com.oracle.truffle.api.InstrumentInfo
      StackMap stack: java.lang.Exception
        16: pop
        17: .line 1828
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.api.InstrumentInfo instrInfo
        end local 2 // com.oracle.truffle.api.nodes.LanguageInfo langInfo
        end local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            2   18     1        env  Lcom/oracle/truffle/api/TruffleLanguage$Env;
            3   18     2   langInfo  Lcom/oracle/truffle/api/nodes/LanguageInfo;
            7   18     3  instrInfo  Lcom/oracle/truffle/api/InstrumentInfo;
      Exception table:
        from    to  target  type
          13    15      16  Class java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLanguageInitializedOrNot();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1832
            ldc "instrumentation-test-language"
            ldc "STATEMENT(EXPRESSION, EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* initSource */
        start local 1 // org.graalvm.polyglot.Source initSource
         1: .line 1833
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.<init>:()V
            astore 2 /* instrument */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
         2: .line 1834
            aload 0 /* this */
            aload 2 /* instrument */
            aload 1 /* initSource */
            iconst_0
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEngine:(Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;Lorg/graalvm/polyglot/Source;Z)V
         3: .line 1837
            aload 2 /* instrument */
            iconst_1
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.initializationEvents:Z
         4: .line 1839
            aload 0 /* this */
            ldc "LOOP(2, STATEMENT())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 1840
            ldc "[FunctionRootNode, false, StatementNode, false, ExpressionNode, false, ExpressionNode, false, FunctionRootNode, true, WhileLoopNode, true, StatementNode, true, StatementNode, true]"
         6: .line 1841
            aload 2 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.getEnteredNodes:()Ljava/lang/String;
         7: .line 1840
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 1842
            return
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
        end local 1 // org.graalvm.polyglot.Source initSource
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    9     1  initSource  Lorg/graalvm/polyglot/Source;
            2    9     2  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestLangInitialized;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLanguageInitializedOnly();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1846
            ldc "instrumentation-test-language"
            ldc "STATEMENT(EXPRESSION, EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* initSource */
        start local 1 // org.graalvm.polyglot.Source initSource
         1: .line 1847
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.<init>:()V
            astore 2 /* instrument */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
         2: .line 1848
            aload 0 /* this */
            aload 2 /* instrument */
            aload 1 /* initSource */
            iconst_0
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEngine:(Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;Lorg/graalvm/polyglot/Source;Z)V
         3: .line 1851
            aload 2 /* instrument */
            iconst_0
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.initializationEvents:Z
         4: .line 1852
            aload 0 /* this */
            ldc "LOOP(2, STATEMENT())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 1853
            ldc "[FunctionRootNode, true, WhileLoopNode, true, StatementNode, true, StatementNode, true]"
            aload 2 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.getEnteredNodes:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 1854
            return
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
        end local 1 // org.graalvm.polyglot.Source initSource
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    7     1  initSource  Lorg/graalvm/polyglot/Source;
            2    7     2  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestLangInitialized;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLanguageInitializedOrNotAppend();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1858
            ldc "instrumentation-test-language"
            ldc "STATEMENT(EXPRESSION, EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* initSource */
        start local 1 // org.graalvm.polyglot.Source initSource
         1: .line 1859
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.<init>:()V
            astore 2 /* instrument */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
         2: .line 1860
            aload 0 /* this */
            aload 2 /* instrument */
            aload 1 /* initSource */
            iconst_1
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEngine:(Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;Lorg/graalvm/polyglot/Source;Z)V
         3: .line 1863
            aload 2 /* instrument */
            iconst_1
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.initializationEvents:Z
         4: .line 1864
            aload 0 /* this */
            ldc "LOOP(2, STATEMENT())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 1865
            ldc "[FunctionRootNode, false, StatementNode, false, ExpressionNode, false, ExpressionNode, false, FunctionRootNode, true, WhileLoopNode, true, StatementNode, true, StatementNode, true, FunctionRootNode, true, StatementNode, true, ExpressionNode, true, ExpressionNode, true]"
         6: .line 1867
            aload 2 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.getEnteredNodes:()Ljava/lang/String;
         7: .line 1865
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 1868
            return
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
        end local 1 // org.graalvm.polyglot.Source initSource
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    9     1  initSource  Lorg/graalvm/polyglot/Source;
            2    9     2  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestLangInitialized;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLanguageInitializedOnlyAppend();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1872
            ldc "instrumentation-test-language"
            ldc "STATEMENT(EXPRESSION, EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* initSource */
        start local 1 // org.graalvm.polyglot.Source initSource
         1: .line 1873
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.<init>:()V
            astore 2 /* instrument */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
         2: .line 1874
            aload 0 /* this */
            aload 2 /* instrument */
            aload 1 /* initSource */
            iconst_1
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEngine:(Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;Lorg/graalvm/polyglot/Source;Z)V
         3: .line 1878
            aload 2 /* instrument */
            iconst_0
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.initializationEvents:Z
         4: .line 1879
            aload 0 /* this */
            ldc "LOOP(2, STATEMENT())"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 1880
            ldc "[FunctionRootNode, true, WhileLoopNode, true, StatementNode, true, StatementNode, true, FunctionRootNode, true, StatementNode, true, ExpressionNode, true, ExpressionNode, true]"
         6: .line 1881
            aload 2 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized.getEnteredNodes:()Ljava/lang/String;
         7: .line 1880
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 1882
            return
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized instrument
        end local 1 // org.graalvm.polyglot.Source initSource
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    9     1  initSource  Lorg/graalvm/polyglot/Source;
            2    9     2  instrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestLangInitialized;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationCreate();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1933
            ldc "instrumentation-test-language"
            ldc "EXPRESSION"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 1934
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$14
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$14.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         2: .line 1940
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 1941
            invokestatic org.junit.Assert.fail:()V
         4: .line 1942
            goto 10
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 2 /* e */
        start local 2 // org.graalvm.polyglot.PolyglotException e
         6: .line 1943
            aload 2 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 1944
            ldc "java.lang.IllegalStateException: Error propagation is not supported in ExecutionEventNodeFactory.create(EventContext). Errors propagated in this method may result in an AST that never stabilizes. Propagate the error in one of the execution event node events like onEnter, onInputValue, onReturn or onReturnExceptional to resolve this problem."
         8: .line 1947
            aload 2 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
         9: .line 1944
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 2 // org.graalvm.polyglot.PolyglotException e
        10: .line 1949
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  source  Lorg/graalvm/polyglot/Source;
            6   10     2       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationOnEnter();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1953
            ldc "instrumentation-test-language"
            ldc "EXPRESSION"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 1954
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$15
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$15.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 2 /* b */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
         2: .line 1966
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 1967
            invokestatic org.junit.Assert.fail:()V
         4: .line 1968
            goto 9
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 3 /* e */
        start local 3 // org.graalvm.polyglot.PolyglotException e
         6: .line 1969
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         7: .line 1970
            ldc "test"
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 1971
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Source.getCharacters:()Ljava/lang/CharSequence;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
            invokevirtual org.graalvm.polyglot.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // org.graalvm.polyglot.PolyglotException e
         9: .line 1973
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 1974
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  source  Lorg/graalvm/polyglot/Source;
            2   11     2       b  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            6    9     3       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationOnReturn();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 1978
            ldc "instrumentation-test-language"
            ldc "EXPRESSION"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 1979
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$16
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$16.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 2 /* b */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
         2: .line 1991
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 1992
            invokestatic org.junit.Assert.fail:()V
         4: .line 1993
            goto 9
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 3 /* e */
        start local 3 // org.graalvm.polyglot.PolyglotException e
         6: .line 1994
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         7: .line 1995
            ldc "test"
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 1996
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Source.getCharacters:()Ljava/lang/CharSequence;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
            invokevirtual org.graalvm.polyglot.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // org.graalvm.polyglot.PolyglotException e
         9: .line 1998
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 1999
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  source  Lorg/graalvm/polyglot/Source;
            2   11     2       b  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            6    9     3       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationOnReturnExceptional();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2003
            ldc "instrumentation-test-language"
            ldc "EXPRESSION(THROW(test, test))"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 2004
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$17
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$17.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 2 /* b */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
         2: .line 2016
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 2017
            invokestatic org.junit.Assert.fail:()V
         4: .line 2018
            goto 9
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 3 /* e */
        start local 3 // org.graalvm.polyglot.PolyglotException e
         6: .line 2019
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         7: .line 2020
            ldc "test"
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 2021
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Source.getCharacters:()Ljava/lang/CharSequence;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
            invokevirtual org.graalvm.polyglot.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // org.graalvm.polyglot.PolyglotException e
         9: .line 2023
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 2024
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  source  Lorg/graalvm/polyglot/Source;
            2   11     2       b  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            6    9     3       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationOnInputValue();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2028
            ldc "instrumentation-test-language"
            ldc "EXPRESSION(EXPRESSION)"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 2029
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            aload 0 /* this */
            invokedynamic create(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
              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:
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$3(Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode; (7)
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 2 /* b */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
         2: .line 2038
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 2039
            invokestatic org.junit.Assert.fail:()V
         4: .line 2040
            goto 9
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 3 /* e */
        start local 3 // org.graalvm.polyglot.PolyglotException e
         6: .line 2041
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         7: .line 2042
            ldc "test"
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 2043
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Source.getCharacters:()Ljava/lang/CharSequence;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
            invokevirtual org.graalvm.polyglot.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // org.graalvm.polyglot.PolyglotException e
         9: .line 2045
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 2046
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  source  Lorg/graalvm/polyglot/Source;
            2   11     2       b  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            6    9     3       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationOnUnwind();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2050
            ldc "instrumentation-test-language"
            ldc "EXPRESSION"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 2051
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            aload 0 /* this */
            invokedynamic create(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
              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:
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$4(Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode; (7)
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 2 /* b */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
         2: .line 2068
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         3: .line 2069
            invokestatic org.junit.Assert.fail:()V
         4: .line 2070
            goto 9
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: org.graalvm.polyglot.PolyglotException
         5: astore 3 /* e */
        start local 3 // org.graalvm.polyglot.PolyglotException e
         6: .line 2071
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.toString:()Ljava/lang/String;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         7: .line 2072
            ldc "test"
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 2073
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Source.getCharacters:()Ljava/lang/CharSequence;
            aload 3 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
            invokevirtual org.graalvm.polyglot.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 3 // org.graalvm.polyglot.PolyglotException e
         9: .line 2075
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 2076
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding b
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   11     1  source  Lorg/graalvm/polyglot/Source;
            2   11     2       b  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            6    9     3       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           2     4       5  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testErrorPropagationOnReturnSuppressed();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2080
            ldc "instrumentation-test-language"
            ldc "EXPRESSION"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 1 /* source */
        start local 1 // org.graalvm.polyglot.Source source
         1: .line 2081
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            aload 0 /* this */
            invokedynamic create(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
              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:
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$5(Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode; (7)
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 2 /* b0 */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding b0
         2: .line 2091
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            aload 0 /* this */
            invokedynamic create(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
              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:
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
                  com/oracle/truffle/api/instrumentation/test/InstrumentationTest.lambda$6(Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode; (7)
                  (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 3 /* b1 */
        start local 3 // com.oracle.truffle.api.instrumentation.EventBinding b1
         3: .line 2101
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         4: .line 2102
            invokestatic org.junit.Assert.fail:()V
         5: .line 2103
            goto 11
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.EventBinding com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: org.graalvm.polyglot.PolyglotException
         6: astore 4 /* e */
        start local 4 // org.graalvm.polyglot.PolyglotException e
         7: .line 2104
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.toString:()Ljava/lang/String;
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isInternalError:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         8: .line 2105
            ldc "test"
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 2106
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Source.getCharacters:()Ljava/lang/CharSequence;
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSourceLocation:()Lorg/graalvm/polyglot/SourceSection;
            invokevirtual org.graalvm.polyglot.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 2107
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getSuppressed:()[Ljava/lang/Throwable;
            pop
        end local 4 // org.graalvm.polyglot.PolyglotException e
        11: .line 2109
      StackMap locals:
      StackMap stack:
            aload 2 /* b0 */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        12: .line 2110
            aload 3 /* b1 */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        13: .line 2111
            return
        end local 3 // com.oracle.truffle.api.instrumentation.EventBinding b1
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding b0
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   14     1  source  Lorg/graalvm/polyglot/Source;
            2   14     2      b0  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            3   14     3      b1  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            7   11     4       e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           3     5       6  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAllocation();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2115
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation.<init>:()V
            astore 1 /* allocation */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation allocation
         1: .line 2116
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.create:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context;
            aload 1 /* allocation */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
         2: .line 2117
            aload 0 /* this */
            ldc "LOOP(3, VARIABLE(a, 10))"
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         3: .line 2118
            ldc "[W 4 null, A 4 10, W 4 null, A 4 10, W 4 null, A 4 10]"
            aload 1 /* allocation */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation.getAllocations:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 2120
            return
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation allocation
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    5     1  allocation  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$TestAllocation;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testPolyglotBindings();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2152
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "bindings-test-instrument"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 1 /* bindingsTestInstrument */
        start local 1 // org.graalvm.polyglot.Instrument bindingsTestInstrument
         1: .line 2153
            aload 1 /* bindingsTestInstrument */
            ldc Ljava/util/function/Supplier;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Supplier
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            astore 2 /* bindingsObject */
        start local 2 // java.lang.Object bindingsObject
         2: .line 2154
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getUncached:()Lcom/oracle/truffle/api/interop/InteropLibrary;
            astore 3 /* interop */
        start local 3 // com.oracle.truffle.api.interop.InteropLibrary interop
         3: .line 2156
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.hasMembers:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         4: .line 2157
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isNull:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         5: .line 2158
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isExecutable:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         6: .line 2159
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isInstantiable:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         7: .line 2165
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member1"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberExisting:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         8: .line 2166
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member2"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberExisting:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         9: .line 2167
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member1"
            invokevirtual org.graalvm.polyglot.Value.hasMember:(Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        10: .line 2168
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member2"
            invokevirtual org.graalvm.polyglot.Value.hasMember:(Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        11: .line 2171
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member1"
            bipush 10
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
        12: .line 2172
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member1"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberExisting:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        13: .line 2173
            bipush 10
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member1"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        14: .line 2176
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member1"
            bipush 11
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.writeMember:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        15: .line 2177
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member2"
            bipush 20
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.writeMember:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        16: .line 2178
            ldc 11
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member1"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        17: .line 2179
            ldc 20
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member2"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        18: .line 2182
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member1"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.removeMember:(Ljava/lang/Object;Ljava/lang/String;)V
        19: .line 2183
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member2"
            invokevirtual org.graalvm.polyglot.Value.removeMember:(Ljava/lang/String;)Z
            pop
        20: .line 2184
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member1"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberExisting:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        21: .line 2185
            aload 3 /* interop */
            aload 2 /* bindingsObject */
            ldc "member2"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberExisting:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        22: .line 2186
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member1"
            invokevirtual org.graalvm.polyglot.Value.hasMember:(Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        23: .line 2187
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            ldc "member2"
            invokevirtual org.graalvm.polyglot.Value.hasMember:(Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        24: .line 2188
            return
        end local 3 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 2 // java.lang.Object bindingsObject
        end local 1 // org.graalvm.polyglot.Instrument bindingsTestInstrument
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   25     0                    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   25     1  bindingsTestInstrument  Lorg/graalvm/polyglot/Instrument;
            2   25     2          bindingsObject  Ljava/lang/Object;
            3   25     3                 interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAsynchronousStacks1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2210
            ldc Lcom/oracle/truffle/api/TruffleLanguage;
            ldc "getAsynchronousStackDepth"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 1 /* getAsynchronousStackDepthMethod */
        start local 1 // java.lang.reflect.Method getAsynchronousStackDepthMethod
         1: .line 2211
            aload 1 /* getAsynchronousStackDepthMethod */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
         2: .line 2213
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* getAsynchronousStackDepthMethod */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.language:Lcom/oracle/truffle/api/TruffleLanguage;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 2214
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            iconst_2
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.setAsynchronousStackDepth:(I)V
         4: .line 2215
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* getAsynchronousStackDepthMethod */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.language:Lcom/oracle/truffle/api/TruffleLanguage;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 2216
            return
        end local 1 // java.lang.reflect.Method getAsynchronousStackDepthMethod
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                             Name  Signature
            0    6     0                             this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    6     1  getAsynchronousStackDepthMethod  Ljava/lang/reflect/Method;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAsynchronousStacks2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2220
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$22
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.language:Lcom/oracle/truffle/api/TruffleLanguage;
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$22.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Lcom/oracle/truffle/api/TruffleLanguage;)V
            astore 1 /* root */
        start local 1 // com.oracle.truffle.api.nodes.RootNode root
         1: .line 2226
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 1 /* root */
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            pop
         2: .line 2227
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            iconst_0
            anewarray java.lang.Object
            aload 1 /* root */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createMaterializedFrame:([Ljava/lang/Object;Lcom/oracle/truffle/api/frame/FrameDescriptor;)Lcom/oracle/truffle/api/frame/MaterializedFrame;
            astore 2 /* frame */
        start local 2 // com.oracle.truffle.api.frame.Frame frame
         3: .line 2228
            aload 1 /* root */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getCallTarget:()Lcom/oracle/truffle/api/RootCallTarget;
            aload 2 /* frame */
            invokestatic com.oracle.truffle.api.TruffleStackTrace.getAsynchronousStackTrace:(Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/truffle/api/frame/Frame;)Ljava/util/List;
            astore 3 /* stack */
        start local 3 // java.util.List stack
         4: .line 2230
            aload 3 /* stack */
            invokestatic org.junit.Assert.assertNull:(Ljava/lang/Object;)V
         5: .line 2231
            return
        end local 3 // java.util.List stack
        end local 2 // com.oracle.truffle.api.frame.Frame frame
        end local 1 // com.oracle.truffle.api.nodes.RootNode root
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1    6     1   root  Lcom/oracle/truffle/api/nodes/RootNode;
            3    6     2  frame  Lcom/oracle/truffle/api/frame/Frame;
            4    6     3  stack  Ljava/util/List<Lcom/oracle/truffle/api/TruffleStackTraceElement;>;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAsynchronousStacks3();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2235
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$23
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$23.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
            invokestatic com.oracle.truffle.api.test.polyglot.ProxyLanguage.setDelegate:(Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage;)Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage;
            pop
         1: .line 2291
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
            astore 1 /* asyncStack */
        start local 1 // java.util.concurrent.atomic.AtomicReference asyncStack
         2: .line 2292
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$24
            dup
            aload 0 /* this */
            aload 1 /* asyncStack */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$24.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Ljava/util/concurrent/atomic/AtomicReference;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
         3: .line 2307
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.context:Lorg/graalvm/polyglot/Context;
            ldc "proxyLanguage"
            ldc ""
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            istore 2 /* ret */
        start local 2 // int ret
         4: .line 2308
            ldc 42
            iload 2 /* ret */
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         5: .line 2309
            aload 1 /* asyncStack */
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.util.List
            astore 3 /* stack */
        start local 3 // java.util.List stack
         6: .line 2310
            bipush 10
            istore 4 /* numTestLevels */
        start local 4 // int numTestLevels
         7: .line 2311
            iconst_1
            istore 5 /* i */
        start local 5 // int i
         8: goto 15
         9: .line 2312
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentationTest java.util.concurrent.atomic.AtomicReference int java.util.List int int
      StackMap stack:
            lconst_1
            aload 3 /* stack */
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 2313
            aload 3 /* stack */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.TruffleStackTraceElement
            astore 6 /* element */
        start local 6 // com.oracle.truffle.api.TruffleStackTraceElement element
        11: .line 2314
            iload 5 /* i */
            i2l
            aload 6 /* element */
            invokevirtual com.oracle.truffle.api.TruffleStackTraceElement.getLocation:()Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsyncNode
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsyncNode.getLevel:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        12: .line 2315
            iload 5 /* i */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            aload 6 /* element */
            invokevirtual com.oracle.truffle.api.TruffleStackTraceElement.getTarget:()Lcom/oracle/truffle/api/RootCallTarget;
            invokeinterface com.oracle.truffle.api.RootCallTarget.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 2316
            aload 6 /* element */
            invokevirtual com.oracle.truffle.api.TruffleStackTraceElement.getTarget:()Lcom/oracle/truffle/api/RootCallTarget;
            aload 6 /* element */
            invokevirtual com.oracle.truffle.api.TruffleStackTraceElement.getFrame:()Lcom/oracle/truffle/api/frame/Frame;
            invokestatic com.oracle.truffle.api.TruffleStackTrace.getAsynchronousStackTrace:(Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/truffle/api/frame/Frame;)Ljava/util/List;
            astore 3 /* stack */
        end local 6 // com.oracle.truffle.api.TruffleStackTraceElement element
        14: .line 2311
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 5 /* i */
            iload 4 /* numTestLevels */
            if_icmplt 9
        end local 5 // int i
        16: .line 2318
            return
        end local 4 // int numTestLevels
        end local 3 // java.util.List stack
        end local 2 // int ret
        end local 1 // java.util.concurrent.atomic.AtomicReference asyncStack
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            2   17     1     asyncStack  Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/List<Lcom/oracle/truffle/api/TruffleStackTraceElement;>;>;
            4   17     2            ret  I
            6   17     3          stack  Ljava/util/List<Lcom/oracle/truffle/api/TruffleStackTraceElement;>;
            7   17     4  numTestLevels  I
            8   16     5              i  I
           11   14     6        element  Lcom/oracle/truffle/api/TruffleStackTraceElement;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAsynchronousStacks4();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
         0: .line 2359
            ldc "ROOT(DEFINE(af11, ROOT(STATEMENT)),DEFINE(af12, ROOT(CALL(af11))),DEFINE(af13, ROOT(CALL(af12))),DEFINE(af14, ROOT(CALL(af13))),DEFINE(af21, ROOT(STATEMENT, SPAWN(af14))),DEFINE(af22, ROOT(CALL(af21))),DEFINE(af23, ROOT(CALL(af22))),DEFINE(af24, ROOT(CALL(af23))),DEFINE(f1, ROOT(STATEMENT, SPAWN(af24))),DEFINE(f2, ROOT(CALL(f1))),DEFINE(f3, ROOT(CALL(f2))),DEFINE(f4, ROOT(CALL(f3))),CALL(f4))"
            astore 1 /* code */
        start local 1 // java.lang.String code
         1: .line 2372
            ldc "instrumentation-test-language"
            aload 1 /* code */
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         2: .line 2373
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.teardown:()V
         3: .line 2374
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 3 /* instrumentationFinished */
        start local 3 // java.util.concurrent.CountDownLatch instrumentationFinished
         4: .line 2375
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokestatic org.graalvm.polyglot.Engine.create:()Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowCreateThread:(Z)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 4 /* asyncContext */
        start local 4 // org.graalvm.polyglot.Context asyncContext
         5: .line 2376
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument.<init>:()V
            astore 5 /* testInstrument */
        start local 5 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument testInstrument
         6: .line 2377
            aload 5 /* testInstrument */
            aload 3 /* instrumentationFinished */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument.instrumentationFinished:Ljava/util/concurrent/CountDownLatch;
         7: .line 2378
            aload 0 /* this */
            aload 4 /* asyncContext */
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$25
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$25.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)V
         8: .line 2384
            aload 5 /* testInstrument */
         9: .line 2378
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage;Lcom/oracle/truffle/api/test/polyglot/ProxyInstrument;)V
        10: .line 2385
            aload 0 /* this */
            aload 2 /* source */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
        11: .line 2386
            aload 3 /* instrumentationFinished */
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
        12: .line 2387
            aload 0 /* this */
            ldc "instrumentation-test-language"
            ldc "JOIN()"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
        13: .line 2388
            return
        end local 5 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument testInstrument
        end local 4 // org.graalvm.polyglot.Context asyncContext
        end local 3 // java.util.concurrent.CountDownLatch instrumentationFinished
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // java.lang.String code
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   14     0                     this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            1   14     1                     code  Ljava/lang/String;
            2   14     2                   source  Lorg/graalvm/polyglot/Source;
            4   14     3  instrumentationFinished  Ljava/util/concurrent/CountDownLatch;
            5   14     4             asyncContext  Lorg/graalvm/polyglot/Context;
            6   14     5           testInstrument  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest$AsynchronousStacksInstrument;
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  static com.oracle.truffle.api.instrumentation.TruffleInstrument$Env access$0(com.oracle.truffle.api.instrumentation.test.InstrumentationTest);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 134
            aload 0
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.instrumentEnv:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static com.oracle.truffle.api.TruffleLanguage access$1(com.oracle.truffle.api.instrumentation.test.InstrumentationTest);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;)Lcom/oracle/truffle/api/TruffleLanguage;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 134
            aload 0
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTest.language:Lcom/oracle/truffle/api/TruffleLanguage;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static boolean lambda$0(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.source.Source s
         0: .line 511
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyLanguageException
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyLanguageException.<init>:()V
            athrow
        end local 0 // com.oracle.truffle.api.source.Source s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     s  Lcom/oracle/truffle/api/source/Source;

  private static boolean lambda$1(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 532
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyLanguageException
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyLanguageException.<init>:()V
            athrow
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;

  private static java.lang.Boolean lambda$2(java.lang.Integer, com.oracle.truffle.api.nodes.Node);
    descriptor: (Ljava/lang/Integer;Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/Boolean;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Integer offset
        start local 1 // com.oracle.truffle.api.nodes.Node node
         0: .line 1040
            aload 1 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharIndex:()I
            istore 2 /* pos */
        start local 2 // int pos
         1: .line 1041
            aload 0 /* offset */
            invokevirtual java.lang.Integer.intValue:()I
            bipush 31
            if_icmpgt 4
         2: .line 1042
            iload 2 /* pos */
            bipush 23
            if_icmpne 3
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
      StackMap locals: int
      StackMap stack:
         3: iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         4: .line 1043
      StackMap locals:
      StackMap stack:
            aload 0 /* offset */
            invokevirtual java.lang.Integer.intValue:()I
            bipush 75
            if_icmpgt 7
         5: .line 1044
            iload 2 /* pos */
            bipush 51
            if_icmpne 6
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
      StackMap locals:
      StackMap stack:
         6: iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         7: .line 1045
      StackMap locals:
      StackMap stack:
            aload 0 /* offset */
            invokevirtual java.lang.Integer.intValue:()I
            bipush 125
            if_icmpgt 10
         8: .line 1046
            iload 2 /* pos */
            bipush 117
            if_icmpne 9
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
      StackMap locals:
      StackMap stack:
         9: iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        10: .line 1048
      StackMap locals:
      StackMap stack:
            iload 2 /* pos */
            sipush 128
            if_icmpne 11
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
      StackMap locals:
      StackMap stack:
        11: iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 2 // int pos
        end local 1 // com.oracle.truffle.api.nodes.Node node
        end local 0 // java.lang.Integer offset
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0  offset  Ljava/lang/Integer;
            0   12     1    node  Lcom/oracle/truffle/api/nodes/Node;
            1   12     2     pos  I

  private com.oracle.truffle.api.instrumentation.ExecutionEventNode lambda$3(com.oracle.truffle.api.instrumentation.EventContext);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext c
         0: .line 2030
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$18
            dup
            aload 0 /* this */
            aload 1 /* c */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$18.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Lcom/oracle/truffle/api/instrumentation/EventContext;)V
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext c
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            0    1     1     c  Lcom/oracle/truffle/api/instrumentation/EventContext;

  private com.oracle.truffle.api.instrumentation.ExecutionEventNode lambda$4(com.oracle.truffle.api.instrumentation.EventContext);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext c
         0: .line 2052
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$19
            dup
            aload 0 /* this */
            aload 1 /* c */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$19.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Lcom/oracle/truffle/api/instrumentation/EventContext;)V
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext c
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            0    1     1     c  Lcom/oracle/truffle/api/instrumentation/EventContext;

  private com.oracle.truffle.api.instrumentation.ExecutionEventNode lambda$5(com.oracle.truffle.api.instrumentation.EventContext);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext c
         0: .line 2082
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$20
            dup
            aload 0 /* this */
            aload 1 /* c */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$20.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Lcom/oracle/truffle/api/instrumentation/EventContext;)V
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext c
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            0    1     1     c  Lcom/oracle/truffle/api/instrumentation/EventContext;

  private com.oracle.truffle.api.instrumentation.ExecutionEventNode lambda$6(com.oracle.truffle.api.instrumentation.EventContext);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext c
         0: .line 2092
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTest$21
            dup
            aload 0 /* this */
            aload 1 /* c */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTest$21.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;Lcom/oracle/truffle/api/instrumentation/EventContext;)V
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext c
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTest;
            0    1     1     c  Lcom/oracle/truffle/api/instrumentation/EventContext;
}
SourceFile: "InstrumentationTest.java"
NestMembers:
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$10  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$11  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$12  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$12$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$13  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$13$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$14  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$15  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$16  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$17  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$18  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$19  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$20  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$21  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$22  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$23  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$23$AsyncRootNode  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$24  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$25  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$26  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$27  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$28  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$29  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$3  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$4  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$5  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$5$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$6  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$6$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$7  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$8  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$9  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsyncNode  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument$1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BeforeUseInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BindingsTestInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BindingsTestInstrument$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BrokenRegistrationInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MetadataInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MetadataInstrument2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyKillException  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyLanguageException  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$OnCreateExcInstrument  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInternalInstruments  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1$1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline$1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline$1$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestException  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1$1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1$2$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1Language  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1Language$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage$3  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageNoParseInline  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1$1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOtherLanguageParseInline  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOtherLanguageParseInline$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOtherLanguageParseInline$2  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestUsedTagNotRequired1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestUsedTagNotRequired1$1  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestUsedTagNotRequired1$Foobar
InnerClasses:
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public final Builder = com.oracle.truffle.api.instrumentation.SourceFilter$Builder of com.oracle.truffle.api.instrumentation.SourceFilter
  public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
  public final RootBodyTag = com.oracle.truffle.api.instrumentation.StandardTags$RootBodyTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final RootTag = com.oracle.truffle.api.instrumentation.StandardTags$RootTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final StatementTag = com.oracle.truffle.api.instrumentation.StandardTags$StatementTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$1
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$10
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$11
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$12
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$13
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$14
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$15
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$16
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$17
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$18
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$19
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$2
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$20
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$21
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$22
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$23
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$24
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$25
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$3
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$4
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$5
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$6
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$7
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$8
  com.oracle.truffle.api.instrumentation.test.InstrumentationTest$9
  AsyncNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsyncNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public AsynchronousStacksInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$AsynchronousStacksInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public BeforeUseInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BeforeUseInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public BindingsTestInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BindingsTestInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public BrokenRegistrationInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$BrokenRegistrationInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public MetadataInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MetadataInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public MetadataInstrument2 = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MetadataInstrument2 of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public MultipleInstanceInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MultipleInstanceInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final MyKillException = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyKillException of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private MyLanguageException = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$MyLanguageException of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final NearestExecutionNodeTester = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$NearestExecutionNodeTester of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final OnCreateExcInstrument = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$OnCreateExcInstrument of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final ReceiverLegacyTester = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverLegacyTester of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final ReceiverTester = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$ReceiverTester of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestAccessInstruments = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstruments of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestAccessInstrumentsOther = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInstrumentsOther of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestAccessInternalInstruments = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAccessInternalInstruments of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final TestAllocation = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestAllocation of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final TestEnvParse1 = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParse1 of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final TestEnvParseInline = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestEnvParseInline of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  TestException = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestException of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestIsNodeTaggedWith1 = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1 of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestIsNodeTaggedWith1Language = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestIsNodeTaggedWith1Language of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final TestLangInitialized = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLangInitialized of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestLanguageInstrumentationLanguage = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageInstrumentationLanguage of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestLanguageNoParseInline = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLanguageNoParseInline of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  private final TestLazyProbe1 = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestLazyProbe1 of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestOtherLanguageParseInline = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOtherLanguageParseInline of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestOutputConsumerArray = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerArray of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestOutputConsumerPiped = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestOutputConsumerPiped of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  public TestUsedTagNotRequired1 = com.oracle.truffle.api.instrumentation.test.InstrumentationTest$TestUsedTagNotRequired1 of com.oracle.truffle.api.instrumentation.test.InstrumentationTest
  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 final Builder = org.graalvm.polyglot.Engine$Builder of org.graalvm.polyglot.Engine