public class com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest 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.SourceSectionListenerTest
  super_class: com.oracle.truffle.api.instrumentation.test.AbstractInstrumentationTest
{
  static final com.oracle.truffle.api.instrumentation.ExecutionEventListener EMPTY_EXECUTION_EVENT_LISTENER;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 356
            new com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$1
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$1.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.EMPTY_EXECUTION_EVENT_LISTENER:Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;
         1: .line 371
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  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.SourceSectionListenerTest this
         0: .line 77
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.AbstractInstrumentationTest.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;

  public void testLoadSourceSection1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 81
            aload 0 /* this */
            iconst_1
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.testLoadSourceSectionImpl:(I)V
         1: .line 82
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLoadSourceSection2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 86
            aload 0 /* this */
            iconst_2
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.testLoadSourceSectionImpl:(I)V
         1: .line 87
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLoadSourceSection3();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 91
            aload 0 /* this */
            iconst_5
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.testLoadSourceSectionImpl:(I)V
         1: .line 92
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private void testLoadSourceSectionImpl(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=13, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
        start local 1 // int runTimes
         0: .line 95
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testLoadSourceSection1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 2 /* instrument */
        start local 2 // org.graalvm.polyglot.Instrument instrument
         1: .line 96
            aload 0 /* this */
            ldc "STATEMENT(EXPRESSION, EXPRESSION)"
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "STATEMENT(EXPRESSION, EXPRESSION)"
            aastore
            dup
            iconst_1
            ldc "EXPRESSION"
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.sections:(Ljava/lang/String;[Ljava/lang/String;)[Lorg/graalvm/polyglot/SourceSection;
            astore 3 /* sourceSections1 */
        start local 3 // org.graalvm.polyglot.SourceSection[] sourceSections1
         2: .line 98
            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;
            astore 4 /* statementFilter */
        start local 4 // com.oracle.truffle.api.instrumentation.SourceSectionFilter statementFilter
         3: .line 99
            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;
            astore 5 /* exprFilter */
        start local 5 // com.oracle.truffle.api.instrumentation.SourceSectionFilter exprFilter
         4: .line 101
            aload 3 /* sourceSections1 */
            iconst_0
            aaload
            invokevirtual org.graalvm.polyglot.SourceSection.getSource:()Lorg/graalvm/polyglot/Source;
            astore 6 /* source1 */
        start local 6 // org.graalvm.polyglot.Source source1
         5: .line 102
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         6: goto 9
         7: .line 103
      StackMap locals: com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest int org.graalvm.polyglot.Instrument org.graalvm.polyglot.SourceSection[] com.oracle.truffle.api.instrumentation.SourceSectionFilter com.oracle.truffle.api.instrumentation.SourceSectionFilter org.graalvm.polyglot.Source int
      StackMap stack:
            aload 0 /* this */
            aload 6 /* source1 */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         8: .line 102
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 7 /* i */
            iload 1 /* runTimes */
            if_icmplt 7
        end local 7 // int i
        10: .line 106
            aload 0 /* this */
            aload 2 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
        11: .line 107
            aload 2 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest$TestLoadSourceSection1;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1
            astore 7 /* impl */
        start local 7 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1 impl
        12: .line 109
            aload 7 /* impl */
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            aload 3 /* sourceSections1 */
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        13: .line 110
            aload 7 /* impl */
            aload 4 /* statementFilter */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_1
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_0
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        14: .line 111
            aload 7 /* impl */
            aload 5 /* exprFilter */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_2
            aaload
            aastore
            dup
            iconst_1
            aload 3 /* sourceSections1 */
            iconst_3
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        15: .line 113
            aload 0 /* this */
            ldc "STATEMENT(EXPRESSION)"
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "STATEMENT(EXPRESSION)"
            aastore
            dup
            iconst_1
            ldc "EXPRESSION"
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.sections:(Ljava/lang/String;[Ljava/lang/String;)[Lorg/graalvm/polyglot/SourceSection;
            astore 8 /* sourceSections2 */
        start local 8 // org.graalvm.polyglot.SourceSection[] sourceSections2
        16: .line 114
            aload 8 /* sourceSections2 */
            iconst_0
            aaload
            invokevirtual org.graalvm.polyglot.SourceSection.getSource:()Lorg/graalvm/polyglot/Source;
            astore 9 /* source2 */
        start local 9 // org.graalvm.polyglot.Source source2
        17: .line 115
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        18: goto 21
        19: .line 116
      StackMap locals: com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest int org.graalvm.polyglot.Instrument org.graalvm.polyglot.SourceSection[] com.oracle.truffle.api.instrumentation.SourceSectionFilter com.oracle.truffle.api.instrumentation.SourceSectionFilter org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1 org.graalvm.polyglot.SourceSection[] org.graalvm.polyglot.Source int
      StackMap stack:
            aload 0 /* this */
            aload 9 /* source2 */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
        20: .line 115
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        21: iload 10 /* i */
            iload 1 /* runTimes */
            if_icmplt 19
        end local 10 // int i
        22: .line 119
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.allEvents:Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection[]
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.merge:([[Lorg/graalvm/polyglot/SourceSection;)[Lorg/graalvm/polyglot/SourceSection;
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        23: .line 120
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyNewEvents:Ljava/util/List;
            aload 8 /* sourceSections2 */
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        24: .line 121
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyStatements:Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_0
            aaload
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            iconst_0
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        25: .line 122
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyExpressions:Ljava/util/List;
            iconst_3
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_2
            aaload
            aastore
            dup
            iconst_1
            aload 3 /* sourceSections1 */
            iconst_3
            aaload
            aastore
            dup
            iconst_2
            aload 8 /* sourceSections2 */
            iconst_2
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        26: .line 124
            aload 7 /* impl */
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection[]
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.merge:([[Lorg/graalvm/polyglot/SourceSection;)[Lorg/graalvm/polyglot/SourceSection;
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        27: .line 125
            aload 7 /* impl */
            aload 4 /* statementFilter */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_0
            aaload
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            iconst_0
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        28: .line 126
            aload 7 /* impl */
            aload 5 /* exprFilter */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_3
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_2
            aaload
            aastore
            dup
            iconst_1
            aload 3 /* sourceSections1 */
            iconst_3
            aaload
            aastore
            dup
            iconst_2
            aload 8 /* sourceSections2 */
            iconst_2
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        29: .line 128
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.teardown:()V
        30: .line 129
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.setup:()V
        31: .line 131
            aload 0 /* this */
            ldc "STATEMENT(EXPRESSION, EXPRESSION, EXPRESSION)"
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "STATEMENT(EXPRESSION, EXPRESSION, EXPRESSION)"
            aastore
            dup
            iconst_1
            ldc "EXPRESSION"
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.sections:(Ljava/lang/String;[Ljava/lang/String;)[Lorg/graalvm/polyglot/SourceSection;
            astore 10 /* sourceSections3 */
        start local 10 // org.graalvm.polyglot.SourceSection[] sourceSections3
        32: .line 132
            aload 10 /* sourceSections3 */
            iconst_0
            aaload
            invokevirtual org.graalvm.polyglot.SourceSection.getSource:()Lorg/graalvm/polyglot/Source;
            astore 11 /* source3 */
        start local 11 // org.graalvm.polyglot.Source source3
        33: .line 133
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        34: goto 37
        35: .line 134
      StackMap locals: com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest int org.graalvm.polyglot.Instrument org.graalvm.polyglot.SourceSection[] com.oracle.truffle.api.instrumentation.SourceSectionFilter com.oracle.truffle.api.instrumentation.SourceSectionFilter org.graalvm.polyglot.Source com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1 org.graalvm.polyglot.SourceSection[] org.graalvm.polyglot.Source org.graalvm.polyglot.SourceSection[] org.graalvm.polyglot.Source int
      StackMap stack:
            aload 0 /* this */
            aload 11 /* source3 */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
        36: .line 133
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        37: iload 12 /* i */
            iload 1 /* runTimes */
            if_icmplt 35
        end local 12 // int i
        38: .line 137
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.allEvents:Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection[]
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.merge:([[Lorg/graalvm/polyglot/SourceSection;)[Lorg/graalvm/polyglot/SourceSection;
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        39: .line 138
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyNewEvents:Ljava/util/List;
            aload 8 /* sourceSections2 */
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        40: .line 139
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyStatements:Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_0
            aaload
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            iconst_0
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        41: .line 140
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyExpressions:Ljava/util/List;
            iconst_3
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_2
            aaload
            aastore
            dup
            iconst_1
            aload 3 /* sourceSections1 */
            iconst_3
            aaload
            aastore
            dup
            iconst_2
            aload 8 /* sourceSections2 */
            iconst_2
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        42: .line 142
            aload 7 /* impl */
            getstatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.ANY:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection[]
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.merge:([[Lorg/graalvm/polyglot/SourceSection;)[Lorg/graalvm/polyglot/SourceSection;
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        43: .line 143
            aload 7 /* impl */
            aload 4 /* statementFilter */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.query:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Ljava/util/List;
            iconst_2
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_0
            aaload
            aastore
            dup
            iconst_1
            aload 8 /* sourceSections2 */
            iconst_0
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertSections:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        44: .line 144
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyExpressions:Ljava/util/List;
            iconst_3
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 3 /* sourceSections1 */
            iconst_2
            aaload
            aastore
            dup
            iconst_1
            aload 3 /* sourceSections1 */
            iconst_3
            aaload
            aastore
            dup
            iconst_2
            aload 8 /* sourceSections2 */
            iconst_2
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        45: .line 146
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testLoadSourceSection1"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            astore 2 /* instrument */
        46: .line 147
            aload 0 /* this */
            aload 2 /* instrument */
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
        47: .line 149
            aload 2 /* instrument */
            ldc Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest$TestLoadSourceSection1;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1
            astore 7 /* impl */
        48: .line 151
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyNewEvents:Ljava/util/List;
            iconst_0
            anewarray org.graalvm.polyglot.SourceSection
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        49: .line 152
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.allEvents:Ljava/util/List;
            aload 10 /* sourceSections3 */
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        50: .line 153
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyStatements:Ljava/util/List;
            iconst_1
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 10 /* sourceSections3 */
            iconst_0
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        51: .line 154
            aload 7 /* impl */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1.onlyExpressions:Ljava/util/List;
            iconst_3
            anewarray org.graalvm.polyglot.SourceSection
            dup
            iconst_0
            aload 10 /* sourceSections3 */
            iconst_2
            aaload
            aastore
            dup
            iconst_1
            aload 10 /* sourceSections3 */
            iconst_3
            aaload
            aastore
            dup
            iconst_2
            aload 10 /* sourceSections3 */
            iconst_4
            aaload
            aastore
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
        52: .line 155
            return
        end local 11 // org.graalvm.polyglot.Source source3
        end local 10 // org.graalvm.polyglot.SourceSection[] sourceSections3
        end local 9 // org.graalvm.polyglot.Source source2
        end local 8 // org.graalvm.polyglot.SourceSection[] sourceSections2
        end local 7 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1 impl
        end local 6 // org.graalvm.polyglot.Source source1
        end local 5 // com.oracle.truffle.api.instrumentation.SourceSectionFilter exprFilter
        end local 4 // com.oracle.truffle.api.instrumentation.SourceSectionFilter statementFilter
        end local 3 // org.graalvm.polyglot.SourceSection[] sourceSections1
        end local 2 // org.graalvm.polyglot.Instrument instrument
        end local 1 // int runTimes
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   53     0             this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            0   53     1         runTimes  I
            1   53     2       instrument  Lorg/graalvm/polyglot/Instrument;
            2   53     3  sourceSections1  [Lorg/graalvm/polyglot/SourceSection;
            3   53     4  statementFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            4   53     5       exprFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            5   53     6          source1  Lorg/graalvm/polyglot/Source;
            6   10     7                i  I
           12   53     7             impl  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest$TestLoadSourceSection1;
           16   53     8  sourceSections2  [Lorg/graalvm/polyglot/SourceSection;
           17   53     9          source2  Lorg/graalvm/polyglot/Source;
           18   22    10                i  I
           32   53    10  sourceSections3  [Lorg/graalvm/polyglot/SourceSection;
           33   53    11          source3  Lorg/graalvm/polyglot/Source;
           34   38    12                i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      runTimes  

  private org.graalvm.polyglot.SourceSection[] sections(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)[Lorg/graalvm/polyglot/SourceSection;
    flags: (0x0082) ACC_PRIVATE, ACC_VARARGS
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
        start local 1 // java.lang.String code
        start local 2 // java.lang.String[] match
         0: .line 158
            ldc "instrumentation-test-language"
            aload 1 /* code */
            ldc "sourceSectionTest"
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.buildLiteral:()Lorg/graalvm/polyglot/Source;
            astore 3 /* source */
        start local 3 // org.graalvm.polyglot.Source source
         1: .line 160
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* sections */
        start local 4 // java.util.List sections
         2: .line 161
            aload 4 /* sections */
            aload 0 /* this */
            aload 3 /* source */
            iconst_0
            aload 1 /* code */
            invokevirtual java.lang.String.length:()I
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.createSection:(Lorg/graalvm/polyglot/Source;II)Lorg/graalvm/polyglot/SourceSection;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 162
            aload 2 /* match */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 10
      StackMap locals: com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest java.lang.String java.lang.String[] org.graalvm.polyglot.Source java.util.List top int int java.lang.String[]
      StackMap stack:
         4: aload 8
            iload 6
            aaload
            astore 5 /* matchExpression */
        start local 5 // java.lang.String matchExpression
         5: .line 163
            iconst_m1
            istore 9 /* index */
        start local 9 // int index
         6: .line 164
            goto 8
         7: .line 165
      StackMap locals: com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest java.lang.String java.lang.String[] org.graalvm.polyglot.Source java.util.List java.lang.String int int java.lang.String[] int
      StackMap stack:
            aload 4 /* sections */
            aload 0 /* this */
            aload 3 /* source */
            iload 9 /* index */
            aload 5 /* matchExpression */
            invokevirtual java.lang.String.length:()I
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.createSection:(Lorg/graalvm/polyglot/Source;II)Lorg/graalvm/polyglot/SourceSection;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 164
      StackMap locals:
      StackMap stack:
            aload 1 /* code */
            aload 5 /* matchExpression */
            iload 9 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            dup
            istore 9 /* index */
            iconst_m1
            if_icmpne 7
        end local 9 // int index
        end local 5 // java.lang.String matchExpression
         9: .line 162
            iinc 6 1
      StackMap locals: com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest java.lang.String java.lang.String[] org.graalvm.polyglot.Source java.util.List top int int java.lang.String[]
      StackMap stack:
        10: iload 6
            iload 7
            if_icmplt 4
        11: .line 168
            aload 4 /* sections */
            iconst_0
            anewarray org.graalvm.polyglot.SourceSection
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast org.graalvm.polyglot.SourceSection[]
            areturn
        end local 4 // java.util.List sections
        end local 3 // org.graalvm.polyglot.Source source
        end local 2 // java.lang.String[] match
        end local 1 // java.lang.String code
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            0   12     1             code  Ljava/lang/String;
            0   12     2            match  [Ljava/lang/String;
            1   12     3           source  Lorg/graalvm/polyglot/Source;
            2   12     4         sections  Ljava/util/List<Lorg/graalvm/polyglot/SourceSection;>;
            5    9     5  matchExpression  Ljava/lang/String;
            6    9     9            index  I
    MethodParameters:
       Name  Flags
      code   
      match  

  private static org.graalvm.polyglot.SourceSection[] merge(org.graalvm.polyglot.SourceSection[][]);
    descriptor: ([[Lorg/graalvm/polyglot/SourceSection;)[Lorg/graalvm/polyglot/SourceSection;
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // org.graalvm.polyglot.SourceSection[][] arrays
         0: .line 172
            iconst_0
            istore 1 /* totalLength */
        start local 1 // int totalLength
         1: .line 173
            aload 0 /* arrays */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: org.graalvm.polyglot.SourceSection[][] int top int int org.graalvm.polyglot.SourceSection[][]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* array */
        start local 2 // org.graalvm.polyglot.SourceSection[] array
         3: .line 174
            iload 1 /* totalLength */
            aload 2 /* array */
            arraylength
            iadd
            istore 1 /* totalLength */
        end local 2 // org.graalvm.polyglot.SourceSection[] array
         4: .line 173
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 2
         6: .line 176
            iload 1 /* totalLength */
            anewarray org.graalvm.polyglot.SourceSection
            astore 2 /* newArray */
        start local 2 // org.graalvm.polyglot.SourceSection[] newArray
         7: .line 178
            iconst_0
            istore 3 /* index */
        start local 3 // int index
         8: .line 179
            aload 0 /* arrays */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 13
      StackMap locals: org.graalvm.polyglot.SourceSection[][] int org.graalvm.polyglot.SourceSection[] int top int int org.graalvm.polyglot.SourceSection[][]
      StackMap stack:
         9: aload 7
            iload 5
            aaload
            astore 4 /* array */
        start local 4 // org.graalvm.polyglot.SourceSection[] array
        10: .line 180
            aload 4 /* array */
            iconst_0
            aload 2 /* newArray */
            iload 3 /* index */
            aload 4 /* array */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 181
            iload 3 /* index */
            aload 4 /* array */
            arraylength
            iadd
            istore 3 /* index */
        end local 4 // org.graalvm.polyglot.SourceSection[] array
        12: .line 179
            iinc 5 1
      StackMap locals:
      StackMap stack:
        13: iload 5
            iload 6
            if_icmplt 9
        14: .line 183
            aload 2 /* newArray */
            areturn
        end local 3 // int index
        end local 2 // org.graalvm.polyglot.SourceSection[] newArray
        end local 1 // int totalLength
        end local 0 // org.graalvm.polyglot.SourceSection[][] arrays
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0       arrays  [[Lorg/graalvm/polyglot/SourceSection;
            1   15     1  totalLength  I
            3    4     2        array  [Lorg/graalvm/polyglot/SourceSection;
            7   15     2     newArray  [Lorg/graalvm/polyglot/SourceSection;
            8   15     3        index  I
           10   12     4        array  [Lorg/graalvm/polyglot/SourceSection;
    MethodParameters:
        Name  Flags
      arrays  

  private static void assertEvents(java.util.List<com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent>, org.graalvm.polyglot.SourceSection[]);
    descriptor: (Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // java.util.List actualEvents
        start local 1 // org.graalvm.polyglot.SourceSection[] expectedSourceSections
         0: .line 187
            aload 1 /* expectedSourceSections */
            arraylength
            i2l
            aload 0 /* actualEvents */
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         1: .line 188
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 8
         3: .line 189
      StackMap locals: int
      StackMap stack:
            aload 0 /* actualEvents */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent
            astore 3 /* actualEvent */
        start local 3 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent actualEvent
         4: .line 190
            aload 1 /* expectedSourceSections */
            iload 2 /* i */
            aaload
            astore 4 /* expectedSourceSection */
        start local 4 // org.graalvm.polyglot.SourceSection expectedSourceSection
         5: .line 191
            new java.lang.StringBuilder
            dup
            ldc "index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* expectedSourceSection */
            aload 3 /* actualEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 192
            new java.lang.StringBuilder
            dup
            ldc "index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* actualEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getNode:()Lcom/oracle/truffle/api/nodes/Node;
            invokevirtual com.oracle.truffle.api.nodes.Node.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 3 /* actualEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 4 // org.graalvm.polyglot.SourceSection expectedSourceSection
        end local 3 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent actualEvent
         7: .line 188
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            aload 1 /* expectedSourceSections */
            arraylength
            if_icmplt 3
        end local 2 // int i
         9: .line 194
            return
        end local 1 // org.graalvm.polyglot.SourceSection[] expectedSourceSections
        end local 0 // java.util.List actualEvents
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   10     0            actualEvents  Ljava/util/List<Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;>;
            0   10     1  expectedSourceSections  [Lorg/graalvm/polyglot/SourceSection;
            2    9     2                       i  I
            4    7     3             actualEvent  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
            5    7     4   expectedSourceSection  Lorg/graalvm/polyglot/SourceSection;
    Signature: (Ljava/util/List<Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;>;[Lorg/graalvm/polyglot/SourceSection;)V
    MethodParameters:
                        Name  Flags
      actualEvents            
      expectedSourceSections  

  private static void assertSections(java.util.List<com.oracle.truffle.api.source.SourceSection>, org.graalvm.polyglot.SourceSection[]);
    descriptor: (Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
    flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.util.List actualSections
        start local 1 // org.graalvm.polyglot.SourceSection[] expectedSections
         0: .line 197
            aload 1 /* expectedSections */
            arraylength
            i2l
            aload 0 /* actualSections */
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         1: .line 198
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 199
      StackMap locals: int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* expectedSections */
            iload 2 /* i */
            aaload
            aload 0 /* actualSections */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 198
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 1 /* expectedSections */
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 201
            return
        end local 1 // org.graalvm.polyglot.SourceSection[] expectedSections
        end local 0 // java.util.List actualSections
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0    actualSections  Ljava/util/List<Lcom/oracle/truffle/api/source/SourceSection;>;
            0    7     1  expectedSections  [Lorg/graalvm/polyglot/SourceSection;
            2    6     2                 i  I
    Signature: (Ljava/util/List<Lcom/oracle/truffle/api/source/SourceSection;>;[Lorg/graalvm/polyglot/SourceSection;)V
    MethodParameters:
                  Name  Flags
      actualSections    
      expectedSections  

  public void testVisitLoadedSourceSections();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 246
            aload 0 /* this */
            ldc "STATEMENT(EXPRESSION)\n"
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "STATEMENT(EXPRESSION)"
            aastore
            dup
            iconst_1
            ldc "EXPRESSION"
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.sections:(Ljava/lang/String;[Ljava/lang/String;)[Lorg/graalvm/polyglot/SourceSection;
            astore 1 /* sourceSections */
        start local 1 // org.graalvm.polyglot.SourceSection[] sourceSections
         1: .line 247
            aload 0 /* this */
            aload 1 /* sourceSections */
            iconst_0
            aaload
            invokevirtual org.graalvm.polyglot.SourceSection.getSource:()Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.run:(Lorg/graalvm/polyglot/Source;)Ljava/lang/String;
            pop
         2: .line 248
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testVisitLoadedSourceSections"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            ldc Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest$TestVisitLoadedSourceSections;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections
            astore 2 /* test */
        start local 2 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections test
         3: .line 249
            aload 2 /* test */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections.visitedEvents:Ljava/util/List;
            aload 1 /* sourceSections */
            invokestatic com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assertEvents:(Ljava/util/List;[Lorg/graalvm/polyglot/SourceSection;)V
         4: .line 251
            aload 0 /* this */
            ldc "EXPRESSION(EXPRESSION,EXPRESSION)"
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         5: .line 252
            aload 1 /* sourceSections */
            arraylength
            i2l
            aload 2 /* test */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections.visitedEvents:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         6: .line 253
            return
        end local 2 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections test
        end local 1 // org.graalvm.polyglot.SourceSection[] sourceSections
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            1    7     1  sourceSections  [Lorg/graalvm/polyglot/SourceSection;
            3    7     2            test  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest$TestVisitLoadedSourceSections;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLoadSourceSectionException();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 274
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.engine:Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "testLoadSourceSectionException"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.assureEnabled:(Lorg/graalvm/polyglot/Instrument;)V
         1: .line 276
            aload 0 /* this */
            ldc "STATEMENT"
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.run:(Ljava/lang/String;)Ljava/lang/String;
            pop
         2: .line 277
            ldc "No exception was thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         3: .line 278
            goto 6
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         4: astore 1 /* ex */
        start local 1 // org.graalvm.polyglot.PolyglotException ex
         5: .line 279
            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 "TestLoadSourceSectionExceptionClass"
            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
         6: .line 281
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            5    6     1    ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           1     3       4  Class org.graalvm.polyglot.PolyglotException
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testNoDeadlock();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 285
            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.SourceSectionListenerTest$SingleSourceSectionLanguage
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$SingleSourceSectionLanguage.<init>:()V
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage;)V
         1: .line 286
            ldc "one"
            astore 1 /* code1 */
        start local 1 // java.lang.String code1
         2: .line 287
            ldc "two"
            astore 2 /* code2 */
        start local 2 // java.lang.String code2
         3: .line 288
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* sourceSectionNotifications */
        start local 3 // java.lang.StringBuilder sourceSectionNotifications
         4: .line 289
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.context:Lorg/graalvm/polyglot/Context;
            ldc "proxyLanguage"
            aload 1 /* code1 */
            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
         5: .line 290
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.context:Lorg/graalvm/polyglot/Context;
            ldc "proxyLanguage"
            aload 2 /* code2 */
            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
         6: .line 291
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 4 /* mainThreadLatch */
        start local 4 // java.util.concurrent.CountDownLatch mainThreadLatch
         7: .line 292
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 5 /* secondThreadLatch */
        start local 5 // java.util.concurrent.CountDownLatch secondThreadLatch
         8: .line 293
            new java.lang.Thread
            dup
            aload 0 /* this */
            aload 2 /* code2 */
            aload 4 /* mainThreadLatch */
            aload 5 /* secondThreadLatch */
            invokedynamic run(Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$0(Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)V (7)
                  ()V
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 6 /* secondInstrumentationThread */
        start local 6 // java.lang.Thread secondInstrumentationThread
         9: .line 303
            aload 6 /* secondInstrumentationThread */
            invokevirtual java.lang.Thread.start:()V
        10: .line 304
            aload 4 /* mainThreadLatch */
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
        11: .line 305
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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 */
            aload 1 /* code1 */
            aload 5 /* secondThreadLatch */
            aload 3 /* sourceSectionNotifications */
            invokedynamic onLoad(Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;)Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;
              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/LoadSourceSectionEvent;)V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$2(Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V (7)
                  (Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
        12: .line 311
            iconst_1
        13: .line 305
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            pop
        14: .line 312
            aload 6 /* secondInstrumentationThread */
            invokevirtual java.lang.Thread.join:()V
        15: .line 313
            new java.lang.StringBuilder
            dup
            aload 1 /* code1 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* code2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* sourceSectionNotifications */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 314
            return
        end local 6 // java.lang.Thread secondInstrumentationThread
        end local 5 // java.util.concurrent.CountDownLatch secondThreadLatch
        end local 4 // java.util.concurrent.CountDownLatch mainThreadLatch
        end local 3 // java.lang.StringBuilder sourceSectionNotifications
        end local 2 // java.lang.String code2
        end local 1 // java.lang.String code1
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   17     0                         this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            2   17     1                        code1  Ljava/lang/String;
            3   17     2                        code2  Ljava/lang/String;
            4   17     3   sourceSectionNotifications  Ljava/lang/StringBuilder;
            7   17     4              mainThreadLatch  Ljava/util/concurrent/CountDownLatch;
            8   17     5            secondThreadLatch  Ljava/util/concurrent/CountDownLatch;
            9   17     6  secondInstrumentationThread  Ljava/lang/Thread;
    Exceptions:
      throws java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testNoDeadlock2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 318
            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.SourceSectionListenerTest$SingleSourceSectionLanguage
            dup
            invokespecial com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$SingleSourceSectionLanguage.<init>:()V
            invokevirtual com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.setupEnv:(Lorg/graalvm/polyglot/Context;Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage;)V
         1: .line 319
            ldc "one"
            astore 1 /* code */
        start local 1 // java.lang.String code
         2: .line 320
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* loadedCode */
        start local 2 // java.lang.StringBuilder loadedCode
         3: .line 321
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.context:Lorg/graalvm/polyglot/Context;
            ldc "proxyLanguage"
            aload 1 /* code */
            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
         4: .line 322
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 3 /* mainThreadLatch */
        start local 3 // java.util.concurrent.CountDownLatch mainThreadLatch
         5: .line 323
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 4 /* secondThreadLatch */
        start local 4 // java.util.concurrent.CountDownLatch secondThreadLatch
         6: .line 324
            new java.lang.Thread
            dup
            aload 0 /* this */
            aload 3 /* mainThreadLatch */
            aload 4 /* secondThreadLatch */
            invokedynamic run(Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$3(Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)V (7)
                  ()V
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 5 /* secondInstrumentationThread */
        start local 5 // java.lang.Thread secondInstrumentationThread
         7: .line 332
            aload 5 /* secondInstrumentationThread */
            invokevirtual java.lang.Thread.start:()V
         8: .line 333
            aload 3 /* mainThreadLatch */
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
         9: .line 334
            new java.util.concurrent.CountDownLatch
            dup
            iconst_1
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 6 /* mainThreadLatch2 */
        start local 6 // java.util.concurrent.CountDownLatch mainThreadLatch2
        10: .line 335
            new java.lang.Thread
            dup
            aload 0 /* this */
            aload 6 /* mainThreadLatch2 */
            aload 4 /* secondThreadLatch */
            aload 2 /* loadedCode */
            invokedynamic run(Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$5(Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;)V (7)
                  ()V
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 7 /* thirdInstrumentationThread */
        start local 7 // java.lang.Thread thirdInstrumentationThread
        11: .line 342
            aload 7 /* thirdInstrumentationThread */
            invokevirtual java.lang.Thread.start:()V
        12: .line 343
            aload 6 /* mainThreadLatch2 */
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
        13: .line 349
            ldc 1000
            invokestatic java.lang.Thread.sleep:(J)V
        14: .line 350
            aload 4 /* secondThreadLatch */
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
        15: .line 351
            aload 5 /* secondInstrumentationThread */
            invokevirtual java.lang.Thread.join:()V
        16: .line 352
            aload 7 /* thirdInstrumentationThread */
            invokevirtual java.lang.Thread.join:()V
        17: .line 353
            aload 1 /* code */
            aload 2 /* loadedCode */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        18: .line 354
            return
        end local 7 // java.lang.Thread thirdInstrumentationThread
        end local 6 // java.util.concurrent.CountDownLatch mainThreadLatch2
        end local 5 // java.lang.Thread secondInstrumentationThread
        end local 4 // java.util.concurrent.CountDownLatch secondThreadLatch
        end local 3 // java.util.concurrent.CountDownLatch mainThreadLatch
        end local 2 // java.lang.StringBuilder loadedCode
        end local 1 // java.lang.String code
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   19     0                         this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            2   19     1                         code  Ljava/lang/String;
            3   19     2                   loadedCode  Ljava/lang/StringBuilder;
            5   19     3              mainThreadLatch  Ljava/util/concurrent/CountDownLatch;
            6   19     4            secondThreadLatch  Ljava/util/concurrent/CountDownLatch;
            7   19     5  secondInstrumentationThread  Ljava/lang/Thread;
           10   19     6             mainThreadLatch2  Ljava/util/concurrent/CountDownLatch;
           11   19     7   thirdInstrumentationThread  Ljava/lang/Thread;
    Exceptions:
      throws java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private void lambda$0(java.lang.String, java.util.concurrent.CountDownLatch, java.util.concurrent.CountDownLatch);
    descriptor: (Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 293
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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 */
            aload 1
            aload 2
            aload 3
            invokedynamic onLoad(Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;
              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/LoadSourceSectionEvent;)V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$1(Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V (7)
                  (Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
         1: .line 302
            iconst_1
         2: .line 293
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
         3: .line 302
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;

  private void lambda$2(java.lang.String, java.util.concurrent.CountDownLatch, java.lang.StringBuilder, com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent);
    descriptor: (Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
        start local 4 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent sse
         0: .line 306
            aload 1
            aload 4 /* sse */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokevirtual java.lang.String.contentEquals:(Ljava/lang/CharSequence;)Z
            ifeq 3
         1: .line 307
            aload 2
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         2: .line 308
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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.test.SourceSectionListenerTest.EMPTY_EXECUTION_EVENT_LISTENER:Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;
            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 310
      StackMap locals:
      StackMap stack:
            aload 3
            aload 4 /* sse */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
         4: .line 311
            return
        end local 4 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent sse
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            0    5     4   sse  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;

  private void lambda$3(java.util.concurrent.CountDownLatch, java.util.concurrent.CountDownLatch);
    descriptor: (Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 324
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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 */
            aload 1
            aload 2
            invokedynamic onLoad(Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;)Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;
              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/LoadSourceSectionEvent;)V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$4(Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V (7)
                  (Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
         1: .line 331
            iconst_1
         2: .line 324
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
         3: .line 331
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;

  private void lambda$5(java.util.concurrent.CountDownLatch, java.util.concurrent.CountDownLatch, java.lang.StringBuilder);
    descriptor: (Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
         0: .line 336
            aload 1
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         1: .line 337
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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;
            aload 2
            aload 3
            invokedynamic onLoad(Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;)Lcom/oracle/truffle/api/instrumentation/LoadSourceListener;
              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/LoadSourceEvent;)V
                  com/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest.lambda$6(Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;Lcom/oracle/truffle/api/instrumentation/LoadSourceEvent;)V (6)
                  (Lcom/oracle/truffle/api/instrumentation/LoadSourceEvent;)V
         2: .line 340
            iconst_1
         3: .line 337
            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 341
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;

  private void lambda$1(java.lang.String, java.util.concurrent.CountDownLatch, java.util.concurrent.CountDownLatch, com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent);
    descriptor: (Ljava/lang/String;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
        start local 4 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent sse
         0: .line 294
            aload 1
            aload 4 /* sse */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokevirtual java.lang.String.contentEquals:(Ljava/lang/CharSequence;)Z
            ifeq 6
         1: .line 295
            aload 2
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         2: .line 297
            aload 3
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
         3: .line 298
            goto 5
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         4: pop
         5: .line 300
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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.test.SourceSectionListenerTest.EMPTY_EXECUTION_EVENT_LISTENER:Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;
            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
         6: .line 302
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent sse
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            0    7     4   sse  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.InterruptedException

  private void lambda$4(java.util.concurrent.CountDownLatch, java.util.concurrent.CountDownLatch, com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent);
    descriptor: (Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
        start local 3 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent sse
         0: .line 325
            aload 1
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         1: .line 327
            aload 2
            invokevirtual java.util.concurrent.CountDownLatch.await:()V
         2: .line 328
            goto 4
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         3: pop
         4: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest.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.test.SourceSectionListenerTest.EMPTY_EXECUTION_EVENT_LISTENER:Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;
            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 331
            return
        end local 3 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent sse
        end local 0 // com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/api/instrumentation/test/SourceSectionListenerTest;
            0    6     3   sse  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.InterruptedException

  private static void lambda$6(java.util.concurrent.CountDownLatch, java.lang.StringBuilder, com.oracle.truffle.api.instrumentation.LoadSourceEvent);
    descriptor: (Ljava/util/concurrent/CountDownLatch;Ljava/lang/StringBuilder;Lcom/oracle/truffle/api/instrumentation/LoadSourceEvent;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=3
        start local 2 // com.oracle.truffle.api.instrumentation.LoadSourceEvent se
         0: .line 338
            aload 0
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         1: .line 339
            aload 1
            aload 2 /* se */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceEvent.getSource:()Lcom/oracle/truffle/api/source/Source;
            invokevirtual com.oracle.truffle.api.source.Source.getCharacters:()Ljava/lang/CharSequence;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
         2: .line 340
            return
        end local 2 // com.oracle.truffle.api.instrumentation.LoadSourceEvent se
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     2    se  Lcom/oracle/truffle/api/instrumentation/LoadSourceEvent;
}
SourceFile: "SourceSectionListenerTest.java"
NestMembers:
  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$1  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$SingleSourceSectionLanguage  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$SingleSourceSectionLanguage$1  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$SingleSourceSectionLanguage$SingleSourceSectionNode  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1$SourceSectionListener  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSectionException  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSectionException$1  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSectionExceptionClass  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections  com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections$1
InnerClasses:
  public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
  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.SourceSectionListenerTest$1
  SingleSourceSectionLanguage = com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$SingleSourceSectionLanguage of com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest
  public TestLoadSourceSection1 = com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSection1 of com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest
  public TestLoadSourceSectionException = com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSectionException of com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest
  private TestLoadSourceSectionExceptionClass = com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestLoadSourceSectionExceptionClass of com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest
  public TestVisitLoadedSourceSections = com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest$TestVisitLoadedSourceSections of com.oracle.truffle.api.instrumentation.test.SourceSectionListenerTest
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source