public class com.oracle.truffle.tools.profiler.test.CPUSamplerTest extends com.oracle.truffle.tools.profiler.test.AbstractProfilerTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.tools.profiler.test.CPUSamplerTest
  super_class: com.oracle.truffle.tools.profiler.test.AbstractProfilerTest
{
  private static com.oracle.truffle.tools.profiler.CPUSampler sampler;
    descriptor: Lcom/oracle/truffle/tools/profiler/CPUSampler;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  final int executionCount;
    descriptor: I
    flags: (0x0010) ACC_FINAL
    ConstantValue: 10

  org.graalvm.polyglot.Source defaultSourceForSampling;
    descriptor: Lorg/graalvm/polyglot/Source;
    flags: (0x0000) 

  final org.graalvm.polyglot.Source defaultRecursiveSourceForSampling;
    descriptor: Lorg/graalvm/polyglot/Source;
    flags: (0x0010) ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 56
            aload 0 /* this */
            invokespecial com.oracle.truffle.tools.profiler.test.AbstractProfilerTest.<init>:()V
         1: .line 60
            aload 0 /* this */
            bipush 10
            putfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.executionCount:I
         2: .line 101
            aload 0 /* this */
            aload 0 /* this */
            ldc "ROOT(DEFINE(foo,ROOT(SLEEP(1))),DEFINE(bar,ROOT(BLOCK(STATEMENT,LOOP(10, CALL(foo))))),DEFINE(baz,ROOT(BLOCK(STATEMENT,LOOP(10, CALL(bar))))),CALL(baz),CALL(bar))"
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.makeSource:(Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            putfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.defaultSourceForSampling:Lorg/graalvm/polyglot/Source;
         3: .line 149
            aload 0 /* this */
            aload 0 /* this */
            ldc "ROOT(DEFINE(rfoo,ROOT(BLOCK(RECURSIVE_CALL(foo, 10),SLEEP(1)))),DEFINE(rbar,ROOT(BLOCK(STATEMENT,LOOP(10, CALL(foo))))),CALL(bar))"
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.makeSource:(Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            putfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.defaultRecursiveSourceForSampling:Lorg/graalvm/polyglot/Source;
         4: .line 56
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;

  public void setupSampler();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 64
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
            invokestatic com.oracle.truffle.tools.profiler.CPUSampler.find:(Lorg/graalvm/polyglot/Engine;)Lcom/oracle/truffle/tools/profiler/CPUSampler;
            putstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
         1: .line 65
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         2: .line 66
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            dup
            astore 1
            monitorenter
         3: .line 67
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setGatherSelfHitTimes:(Z)V
         4: .line 68
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_0
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setDelaySamplingUntilNonInternalLangInit:(Z)V
         5: .line 66
            aload 1
            monitorexit
         6: goto 9
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest com.oracle.truffle.tools.profiler.CPUSampler
      StackMap stack: java.lang.Throwable
         7: aload 1
            monitorexit
         8: athrow
         9: .line 70
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
      Exception table:
        from    to  target  type
           3     6       7  any
           7     8       7  any
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  public void testCollectingAndHasData();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 75
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         1: .line 77
            lconst_0
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getSampleCount:()J
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         2: .line 78
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.isCollecting:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         3: .line 79
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.hasData:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         4: .line 81
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         5: goto 8
         6: .line 82
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.defaultSourceForSampling:Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.eval:(Lorg/graalvm/polyglot/Source;)V
         7: .line 81
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 1 /* i */
            bipush 10
            if_icmplt 6
        end local 1 // int i
         9: .line 85
            lconst_0
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getSampleCount:()J
            invokestatic org.junit.Assert.assertNotEquals:(JJ)V
        10: .line 86
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.isCollecting:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        11: .line 87
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.hasData:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        12: .line 89
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_0
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
        13: .line 91
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.isCollecting:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        14: .line 92
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.hasData:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        15: .line 94
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.clearData:()V
        16: .line 95
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.isCollecting:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        17: .line 96
            lconst_0
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getSampleCount:()J
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        18: .line 98
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.hasData:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        19: .line 99
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            5    9     1     i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCorrectRootStructure();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 111
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         1: .line 112
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         2: .line 113
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         3: goto 6
         4: .line 114
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.defaultSourceForSampling:Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.eval:(Lorg/graalvm/polyglot/Source;)V
         5: .line 113
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 1 /* i */
            bipush 10
            if_icmplt 4
        end local 1 // int i
         7: .line 117
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 1 /* children */
        start local 1 // java.util.Collection children
         8: .line 118
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 119
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 2 /* program */
        start local 2 // com.oracle.truffle.tools.profiler.ProfilerNode program
        10: .line 120
            ldc ""
            aload 2 /* program */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 121
            aload 2 /* program */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        12: .line 123
            aload 2 /* program */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        13: .line 124
            ldc 2
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        14: .line 125
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3 /* iterator */
        start local 3 // java.util.Iterator iterator
        15: .line 126
            aload 3 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 4 /* baz */
        start local 4 // com.oracle.truffle.tools.profiler.ProfilerNode baz
        16: .line 127
            ldc "baz"
            aload 4 /* baz */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
        17: .line 128
            aload 3 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 4 /* baz */
        18: .line 130
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack:
            ldc "baz"
            aload 4 /* baz */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        19: .line 131
            aload 4 /* baz */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        20: .line 133
            aload 4 /* baz */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        21: .line 134
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        22: .line 135
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 5 /* bar */
        start local 5 // com.oracle.truffle.tools.profiler.ProfilerNode bar
        23: .line 136
            ldc "bar"
            aload 5 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        24: .line 137
            aload 5 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        25: .line 139
            aload 5 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        26: .line 140
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        27: .line 141
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 6 /* foo */
        start local 6 // com.oracle.truffle.tools.profiler.ProfilerNode foo
        28: .line 142
            ldc "foo"
            aload 6 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        29: .line 143
            aload 6 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        30: .line 145
            aload 6 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        31: .line 146
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            ifne 32
            iconst_1
            goto 33
      StackMap locals: com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack:
        32: iconst_0
      StackMap locals:
      StackMap stack: int
        33: invokestatic org.junit.Assert.assertTrue:(Z)V
        34: .line 147
            return
        end local 6 // com.oracle.truffle.tools.profiler.ProfilerNode foo
        end local 5 // com.oracle.truffle.tools.profiler.ProfilerNode bar
        end local 4 // com.oracle.truffle.tools.profiler.ProfilerNode baz
        end local 3 // java.util.Iterator iterator
        end local 2 // com.oracle.truffle.tools.profiler.ProfilerNode program
        end local 1 // java.util.Collection children
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   35     0      this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3    7     1         i  I
            8   35     1  children  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
           10   35     2   program  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           15   35     3  iterator  Ljava/util/Iterator<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
           16   35     4       baz  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           23   35     5       bar  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           28   35     6       foo  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testCorrectRootStructureRecursive();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 159
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         1: .line 160
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         2: .line 161
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         3: goto 6
         4: .line 162
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.defaultRecursiveSourceForSampling:Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.eval:(Lorg/graalvm/polyglot/Source;)V
         5: .line 161
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 1 /* i */
            bipush 10
            if_icmplt 4
        end local 1 // int i
         7: .line 165
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 1 /* children */
        start local 1 // java.util.Collection children
         8: .line 166
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         9: .line 167
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 2 /* program */
        start local 2 // com.oracle.truffle.tools.profiler.ProfilerNode program
        10: .line 168
            ldc ""
            aload 2 /* program */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 169
            aload 2 /* program */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        12: .line 171
            aload 2 /* program */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        13: .line 172
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        14: .line 173
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 3 /* bar */
        start local 3 // com.oracle.truffle.tools.profiler.ProfilerNode bar
        15: .line 174
            ldc "rbar"
            aload 3 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 175
            aload 3 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        17: .line 177
            aload 3 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        18: .line 178
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        19: .line 179
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 4 /* foo */
        start local 4 // com.oracle.truffle.tools.profiler.ProfilerNode foo
        20: .line 180
            ldc "rfoo"
            aload 4 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        21: .line 181
            aload 4 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        22: .line 184
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        23: goto 30
        24: .line 185
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.ProfilerNode int
      StackMap stack:
            aload 4 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        25: .line 186
            lconst_1
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        26: .line 187
            aload 1 /* children */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 4 /* foo */
        27: .line 188
            ldc "rfoo"
            aload 4 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        28: .line 189
            aload 3 /* bar */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkTimeline:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
        29: .line 184
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        30: iload 5 /* i */
            bipush 10
            if_icmplt 24
        end local 5 // int i
        31: .line 192
            aload 4 /* foo */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            astore 1 /* children */
        32: .line 193
            aload 1 /* children */
            invokeinterface java.util.Collection.size:()I
            ifne 33
            iconst_1
            goto 34
      StackMap locals:
      StackMap stack:
        33: iconst_0
      StackMap locals:
      StackMap stack: int
        34: invokestatic org.junit.Assert.assertTrue:(Z)V
        35: .line 194
            return
        end local 4 // com.oracle.truffle.tools.profiler.ProfilerNode foo
        end local 3 // com.oracle.truffle.tools.profiler.ProfilerNode bar
        end local 2 // com.oracle.truffle.tools.profiler.ProfilerNode program
        end local 1 // java.util.Collection children
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   36     0      this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3    7     1         i  I
            8   36     1  children  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
           10   36     2   program  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           15   36     3       bar  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           20   36     4       foo  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           23   31     5         i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()
      org.junit.Ignore(value = "non-deterministic failures on spark")

  public void testShadowStackOverflows();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 198
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         1: .line 199
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_2
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setStackLimit:(I)V
         2: .line 200
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         3: .line 201
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         4: goto 7
         5: .line 202
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.defaultSourceForSampling:Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.eval:(Lorg/graalvm/polyglot/Source;)V
         6: .line 201
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 1 /* i */
            bipush 10
            if_icmplt 5
        end local 1 // int i
         8: .line 204
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.hasStackOverflowed:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         9: .line 205
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            4    8     1     i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void checkTimeline(com.oracle.truffle.tools.profiler.CPUSampler$Payload);
    descriptor: (Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.CPUSampler$Payload payload
         0: .line 208
            ldc "Timeline length and self hit count to not match!"
            aload 0 /* payload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            i2l
            aload 0 /* payload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitTimes:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
         1: .line 209
            return
        end local 0 // com.oracle.truffle.tools.profiler.CPUSampler$Payload payload
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  payload  Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;
    MethodParameters:
         Name  Flags
      payload  

  public void testCorrectInitShadowStackStatements();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 407
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.CPUSampler$Mode.STATEMENTS:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setMode:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;)V
         1: .line 408
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_STATEMENT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         2: .line 409
            ldc "RecreateShadowStackTestLanguage"
            ldc "Statement Root"
            ldc "test"
            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 1 /* test */
        start local 1 // org.graalvm.polyglot.Source test
         3: .line 410
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* test */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         4: .line 411
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 2 /* rootNodes */
        start local 2 // java.util.Collection rootNodes
         5: .line 413
            aload 2 /* rootNodes */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 3 /* current */
        start local 3 // com.oracle.truffle.tools.profiler.ProfilerNode current
         6: .line 414
            aload 3 /* current */
            ldc "Statement"
            iconst_0
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 3 /* current */
         7: .line 415
            aload 3 /* current */
            ldc "Statement"
            iconst_0
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 3 /* current */
         8: .line 416
            aload 3 /* current */
            ldc "Statement"
            iconst_0
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 3 /* current */
         9: .line 417
            aload 3 /* current */
            ldc "Statement"
            iconst_0
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 3 /* current */
        10: .line 418
            aload 3 /* current */
            ldc "Statement"
            iconst_1
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            pop
        11: .line 419
            return
        end local 3 // com.oracle.truffle.tools.profiler.ProfilerNode current
        end local 2 // java.util.Collection rootNodes
        end local 1 // org.graalvm.polyglot.Source test
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3   12     1       test  Lorg/graalvm/polyglot/Source;
            5   12     2  rootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            6   12     3    current  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload> checkStackState(com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>, java.lang.String, boolean);
    descriptor: (Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.tools.profiler.ProfilerNode current
        start local 1 // java.lang.String expectedSource
        start local 2 // boolean top
         0: .line 422
            ldc "Stack not correct"
            aload 1 /* expectedSource */
            aload 0 /* current */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 423
            iload 2 /* top */
            ifeq 4
         2: .line 424
            ldc "Stack too deep"
            aload 0 /* current */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         3: .line 425
            aconst_null
            areturn
         4: .line 427
      StackMap locals:
      StackMap stack:
            ldc "Stack not deep enough"
            aload 0 /* current */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.hasNext:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         5: .line 428
            aload 0 /* current */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            areturn
        end local 2 // boolean top
        end local 1 // java.lang.String expectedSource
        end local 0 // com.oracle.truffle.tools.profiler.ProfilerNode current
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0         current  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            0    6     1  expectedSource  Ljava/lang/String;
            0    6     2             top  Z
    Signature: (Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
    MethodParameters:
                Name  Flags
      current         
      expectedSource  
      top             

  public void testCorrectInitShadowStackRoots();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 435
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.CPUSampler$Mode.ROOTS:Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setMode:(Lcom/oracle/truffle/tools/profiler/CPUSampler$Mode;)V
         1: .line 436
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         2: .line 437
            ldc "RecreateShadowStackTestLanguage"
            ldc "Root Root"
            ldc "test"
            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 1 /* test */
        start local 1 // org.graalvm.polyglot.Source test
         3: .line 438
            aload 0 /* this */
            getfield com.oracle.truffle.tools.profiler.test.CPUSamplerTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* test */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         4: .line 439
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 2 /* rootNodes */
        start local 2 // java.util.Collection rootNodes
         5: .line 441
            aload 2 /* rootNodes */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 3 /* current */
        start local 3 // com.oracle.truffle.tools.profiler.ProfilerNode current
         6: .line 442
            aload 3 /* current */
            ldc "Root"
            iconst_0
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 3 /* current */
         7: .line 443
            aload 3 /* current */
            ldc "Root"
            iconst_0
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 3 /* current */
         8: .line 444
            aload 3 /* current */
            ldc "Root"
            iconst_1
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.checkStackState:(Lcom/oracle/truffle/tools/profiler/ProfilerNode;Ljava/lang/String;Z)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            pop
         9: .line 445
            return
        end local 3 // com.oracle.truffle.tools.profiler.ProfilerNode current
        end local 2 // java.util.Collection rootNodes
        end local 1 // org.graalvm.polyglot.Source test
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3   10     1       test  Lorg/graalvm/polyglot/Source;
            5   10     2  rootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            6   10     3    current  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testMultiThreadedRecursive();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 449
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         1: .line 450
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         2: .line 451
            new com.oracle.truffle.tools.profiler.test.CPUSamplerTest$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.tools.profiler.test.CPUSamplerTest$1.<init>:(Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;)V
            astore 1 /* runnable */
        start local 1 // java.lang.Runnable runnable
         3: .line 459
            new com.oracle.truffle.tools.profiler.test.CPUSamplerTest$2
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.tools.profiler.test.CPUSamplerTest$2.<init>:(Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;)V
            astore 2 /* recursiveRunnable */
        start local 2 // java.lang.Runnable recursiveRunnable
         4: .line 467
            new java.lang.Thread
            dup
            aload 1 /* runnable */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 3 /* first */
        start local 3 // java.lang.Thread first
         5: .line 468
            aload 3 /* first */
            invokevirtual java.lang.Thread.start:()V
         6: .line 470
            aload 3 /* first */
            invokevirtual java.lang.Thread.join:()V
         7: .line 471
            goto 10
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.lang.Runnable java.lang.Runnable java.lang.Thread
      StackMap stack: java.lang.InterruptedException
         8: pop
         9: .line 472
            ldc "Thread interrupted"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        10: .line 475
      StackMap locals:
      StackMap stack:
            new java.lang.Thread
            dup
            aload 2 /* recursiveRunnable */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 4 /* second */
        start local 4 // java.lang.Thread second
        11: .line 476
            aload 4 /* second */
            invokevirtual java.lang.Thread.start:()V
        12: .line 478
            aload 4 /* second */
            invokevirtual java.lang.Thread.join:()V
        13: .line 479
            goto 16
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.lang.Runnable java.lang.Runnable java.lang.Thread java.lang.Thread
      StackMap stack: java.lang.InterruptedException
        14: pop
        15: .line 480
            ldc "Thread interrupted"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        16: .line 482
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getThreadToNodesMap:()Ljava/util/Map;
            astore 5 /* threadToNodesMap */
        start local 5 // java.util.Map threadToNodesMap
        17: .line 483
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 6 /* rootNodes */
        start local 6 // java.util.Collection rootNodes
        18: .line 484
            aload 6 /* rootNodes */
            aload 5 /* threadToNodesMap */
            aload 3 /* first */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.traverseAndCompareForDifferentSources:(Ljava/util/Collection;Ljava/util/Collection;)V
        19: .line 485
            aload 6 /* rootNodes */
            aload 5 /* threadToNodesMap */
            aload 4 /* second */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.traverseAndCompareForDifferentSources:(Ljava/util/Collection;Ljava/util/Collection;)V
        20: .line 486
            return
        end local 6 // java.util.Collection rootNodes
        end local 5 // java.util.Map threadToNodesMap
        end local 4 // java.lang.Thread second
        end local 3 // java.lang.Thread first
        end local 2 // java.lang.Runnable recursiveRunnable
        end local 1 // java.lang.Runnable runnable
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   21     0               this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3   21     1           runnable  Ljava/lang/Runnable;
            4   21     2  recursiveRunnable  Ljava/lang/Runnable;
            5   21     3              first  Ljava/lang/Thread;
           11   21     4             second  Ljava/lang/Thread;
           17   21     5   threadToNodesMap  Ljava/util/Map<Ljava/lang/Thread;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;>;
           18   21     6          rootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.InterruptedException
          12    13      14  Class java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void traverseAndCompareForDifferentSources(java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>, java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>);
    descriptor: (Ljava/util/Collection;Ljava/util/Collection;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // java.util.Collection merged
        start local 1 // java.util.Collection perThread
         0: .line 489
            aload 1 /* perThread */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 15
      StackMap locals: java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 2 /* node */
        start local 2 // com.oracle.truffle.tools.profiler.ProfilerNode node
         2: .line 490
            aload 0 /* merged */
            aload 2 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 2 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.findNodeBySourceAndRoot:(Ljava/util/Collection;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 4 /* mergedNode */
        start local 4 // com.oracle.truffle.tools.profiler.ProfilerNode mergedNode
         3: .line 491
            ldc "Merged structure does not mach per thread structure"
            aload 4 /* mergedNode */
            ifnull 4
            iconst_1
            goto 5
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack: java.lang.String
         4: iconst_0
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack: java.lang.String int
         5: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         6: .line 492
            aload 4 /* mergedNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            astore 5 /* mergedNodePayload */
        start local 5 // com.oracle.truffle.tools.profiler.CPUSampler$Payload mergedNodePayload
         7: .line 493
            aload 2 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            astore 6 /* nodePayload */
        start local 6 // com.oracle.truffle.tools.profiler.CPUSampler$Payload nodePayload
         8: .line 494
            ldc "Merged structure does not mach per thread structure"
            aload 6 /* nodePayload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            aload 5 /* mergedNodePayload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            if_icmpne 9
            iconst_1
            goto 10
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.CPUSampler$Payload com.oracle.truffle.tools.profiler.CPUSampler$Payload
      StackMap stack: java.lang.String
         9: iconst_0
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.CPUSampler$Payload com.oracle.truffle.tools.profiler.CPUSampler$Payload
      StackMap stack: java.lang.String int
        10: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        11: .line 495
            ldc "Merged structure does not mach per thread structure"
            aload 6 /* nodePayload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getHitCount:()I
            aload 5 /* mergedNodePayload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getHitCount:()I
            if_icmpne 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack: java.lang.String
        12: iconst_0
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.CPUSampler$Payload com.oracle.truffle.tools.profiler.CPUSampler$Payload
      StackMap stack: java.lang.String int
        13: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        14: .line 496
            aload 4 /* mergedNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            aload 2 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.traverseAndCompareForDifferentSources:(Ljava/util/Collection;Ljava/util/Collection;)V
        end local 6 // com.oracle.truffle.tools.profiler.CPUSampler$Payload nodePayload
        end local 5 // com.oracle.truffle.tools.profiler.CPUSampler$Payload mergedNodePayload
        end local 4 // com.oracle.truffle.tools.profiler.ProfilerNode mergedNode
        end local 2 // com.oracle.truffle.tools.profiler.ProfilerNode node
        15: .line 489
      StackMap locals: java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        16: .line 498
            return
        end local 1 // java.util.Collection perThread
        end local 0 // java.util.Collection merged
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   17     0             merged  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            0   17     1          perThread  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            2   15     2               node  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            3   15     4         mergedNode  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            7   15     5  mergedNodePayload  Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;
            8   15     6        nodePayload  Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;
    Signature: (Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;)V
    MethodParameters:
           Name  Flags
      merged     
      perThread  

  private static com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload> findNodeBySourceAndRoot(java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>, com.oracle.truffle.api.source.SourceSection, java.lang.String);
    descriptor: (Ljava/util/Collection;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.util.Collection merged
        start local 1 // com.oracle.truffle.api.source.SourceSection sourceSection
        start local 2 // java.lang.String rootName
         0: .line 501
            aload 0 /* merged */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: java.util.Collection com.oracle.truffle.api.source.SourceSection java.lang.String top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 3 /* node */
        start local 3 // com.oracle.truffle.tools.profiler.ProfilerNode node
         2: .line 502
            aload 3 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 1 /* sourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.equals:(Ljava/lang/Object;)Z
            ifeq 4
            aload 3 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            aload 2 /* rootName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 503
            aload 3 /* node */
            areturn
        end local 3 // com.oracle.truffle.tools.profiler.ProfilerNode node
         4: .line 501
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 506
            aconst_null
            areturn
        end local 2 // java.lang.String rootName
        end local 1 // com.oracle.truffle.api.source.SourceSection sourceSection
        end local 0 // java.util.Collection merged
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0         merged  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            0    6     1  sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            0    6     2       rootName  Ljava/lang/String;
            2    4     3           node  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
    Signature: (Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
    MethodParameters:
               Name  Flags
      merged         
      sourceSection  
      rootName       

  public void testMultiThreaded();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 511
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         1: .line 512
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         2: .line 513
            new com.oracle.truffle.tools.profiler.test.CPUSamplerTest$3
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.tools.profiler.test.CPUSamplerTest$3.<init>:(Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;)V
            astore 1 /* runnable */
        start local 1 // java.lang.Runnable runnable
         3: .line 521
            new java.lang.Thread
            dup
            aload 1 /* runnable */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 2 /* first */
        start local 2 // java.lang.Thread first
         4: .line 522
            aload 2 /* first */
            invokevirtual java.lang.Thread.start:()V
         5: .line 524
            aload 2 /* first */
            invokevirtual java.lang.Thread.join:()V
         6: .line 525
            goto 9
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.lang.Runnable java.lang.Thread
      StackMap stack: java.lang.InterruptedException
         7: pop
         8: .line 526
            ldc "Thread interrupted"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         9: .line 529
      StackMap locals:
      StackMap stack:
            new java.lang.Thread
            dup
            aload 1 /* runnable */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 3 /* second */
        start local 3 // java.lang.Thread second
        10: .line 530
            aload 3 /* second */
            invokevirtual java.lang.Thread.start:()V
        11: .line 532
            aload 3 /* second */
            invokevirtual java.lang.Thread.join:()V
        12: .line 533
            goto 15
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.lang.Runnable java.lang.Thread java.lang.Thread
      StackMap stack: java.lang.InterruptedException
        13: pop
        14: .line 534
            ldc "Thread interrupted"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        15: .line 536
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getThreadToNodesMap:()Ljava/util/Map;
            astore 4 /* threadToNodesMap */
        start local 4 // java.util.Map threadToNodesMap
        16: .line 537
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 5 /* rootNodes */
        start local 5 // java.util.Collection rootNodes
        17: .line 538
            aload 0 /* this */
            aload 5 /* rootNodes */
            aload 4 /* threadToNodesMap */
            aload 2 /* first */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            aload 4 /* threadToNodesMap */
            aload 3 /* second */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.traverseAndCompareForSameSource:(Ljava/util/Collection;Ljava/util/Collection;Ljava/util/Collection;)V
        18: .line 539
            return
        end local 5 // java.util.Collection rootNodes
        end local 4 // java.util.Map threadToNodesMap
        end local 3 // java.lang.Thread second
        end local 2 // java.lang.Thread first
        end local 1 // java.lang.Runnable runnable
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   19     0              this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3   19     1          runnable  Ljava/lang/Runnable;
            4   19     2             first  Ljava/lang/Thread;
           10   19     3            second  Ljava/lang/Thread;
           16   19     4  threadToNodesMap  Ljava/util/Map<Ljava/lang/Thread;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;>;
           17   19     5         rootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.InterruptedException
          11    12      13  Class java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private void traverseAndCompareForSameSource(java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>, java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>, java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>);
    descriptor: (Ljava/util/Collection;Ljava/util/Collection;Ljava/util/Collection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
        start local 1 // java.util.Collection rootNodes
        start local 2 // java.util.Collection profilerNodes1
        start local 3 // java.util.Collection profilerNodes2
         0: .line 543
            aload 1 /* rootNodes */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 16
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
         1: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 4 /* node */
        start local 4 // com.oracle.truffle.tools.profiler.ProfilerNode node
         2: .line 544
            aload 2 /* profilerNodes1 */
            aload 4 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 4 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.findNodeBySourceAndRoot:(Ljava/util/Collection;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 6 /* found1 */
        start local 6 // com.oracle.truffle.tools.profiler.ProfilerNode found1
         3: .line 545
            aload 3 /* profilerNodes2 */
            aload 4 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 4 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.findNodeBySourceAndRoot:(Ljava/util/Collection;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)Lcom/oracle/truffle/tools/profiler/ProfilerNode;
            astore 7 /* found2 */
        start local 7 // com.oracle.truffle.tools.profiler.ProfilerNode found2
         4: .line 546
            ldc "Merged structure does not mach per thread structure"
            aload 6 /* found1 */
            ifnull 5
            iconst_1
            goto 6
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack: java.lang.String
         5: iconst_0
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack: java.lang.String int
         6: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         7: .line 547
            ldc "Merged structure does not mach per thread structure"
            aload 7 /* found2 */
            ifnull 8
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack: java.lang.String
         8: iconst_0
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode com.oracle.truffle.tools.profiler.ProfilerNode
      StackMap stack: java.lang.String int
         9: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        10: .line 548
            aload 4 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            astore 8 /* nodePayload */
        start local 8 // com.oracle.truffle.tools.profiler.CPUSampler$Payload nodePayload
        11: .line 549
            aload 6 /* found1 */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            astore 9 /* found1Payload */
        start local 9 // com.oracle.truffle.tools.profiler.CPUSampler$Payload found1Payload
        12: .line 550
            aload 7 /* found2 */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            astore 10 /* found2Payload */
        start local 10 // com.oracle.truffle.tools.profiler.CPUSampler$Payload found2Payload
        13: .line 551
            ldc "Merged structure does not mach per thread structure"
            aload 8 /* nodePayload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            i2l
            aload 9 /* found1Payload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            aload 10 /* found2Payload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            iadd
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        14: .line 552
            ldc "Merged structure does not mach per thread structure"
            aload 8 /* nodePayload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getHitCount:()I
            i2l
            aload 9 /* found1Payload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getHitCount:()I
            aload 10 /* found2Payload */
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getHitCount:()I
            iadd
            i2l
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;JJ)V
        15: .line 553
            aload 0 /* this */
            aload 4 /* node */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            aload 6 /* found1 */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            aload 7 /* found2 */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            invokevirtual com.oracle.truffle.tools.profiler.test.CPUSamplerTest.traverseAndCompareForSameSource:(Ljava/util/Collection;Ljava/util/Collection;Ljava/util/Collection;)V
        end local 10 // com.oracle.truffle.tools.profiler.CPUSampler$Payload found2Payload
        end local 9 // com.oracle.truffle.tools.profiler.CPUSampler$Payload found1Payload
        end local 8 // com.oracle.truffle.tools.profiler.CPUSampler$Payload nodePayload
        end local 7 // com.oracle.truffle.tools.profiler.ProfilerNode found2
        end local 6 // com.oracle.truffle.tools.profiler.ProfilerNode found1
        end local 4 // com.oracle.truffle.tools.profiler.ProfilerNode node
        16: .line 543
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.Collection java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        17: .line 555
            return
        end local 3 // java.util.Collection profilerNodes2
        end local 2 // java.util.Collection profilerNodes1
        end local 1 // java.util.Collection rootNodes
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0            this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            0   18     1       rootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            0   18     2  profilerNodes1  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            0   18     3  profilerNodes2  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            2   16     4            node  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            3   16     6          found1  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            4   16     7          found2  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
           11   16     8     nodePayload  Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;
           12   16     9   found1Payload  Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;
           13   16    10   found2Payload  Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;
    Signature: (Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;)V
    MethodParameters:
                Name  Flags
      rootNodes       
      profilerNodes1  
      profilerNodes2  

  public void testThreadSafe();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 559
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.NO_INTERNAL_ROOT_TAG_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setFilter:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         1: .line 560
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
         2: .line 561
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
            astore 1 /* cancelled */
        start local 1 // java.util.concurrent.atomic.AtomicBoolean cancelled
         3: .line 562
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 2 /* iterations */
        start local 2 // java.util.concurrent.atomic.AtomicInteger iterations
         4: .line 563
            new com.oracle.truffle.tools.profiler.test.CPUSamplerTest$4
            dup
            aload 0 /* this */
            aload 1 /* cancelled */
            aload 2 /* iterations */
            invokespecial com.oracle.truffle.tools.profiler.test.CPUSamplerTest$4.<init>:(Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicInteger;)V
            astore 3 /* runnable */
        start local 3 // java.lang.Runnable runnable
         5: .line 572
            new java.lang.Thread
            dup
            aload 3 /* runnable */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 4 /* execThread */
        start local 4 // java.lang.Thread execThread
         6: .line 573
            aload 4 /* execThread */
            invokevirtual java.lang.Thread.start:()V
         7: .line 574
            aload 2 /* iterations */
            iconst_2
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.ensureIterations:(Ljava/util/concurrent/atomic/AtomicInteger;I)V
         8: .line 575
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 5 /* oldNodes */
        start local 5 // java.util.Collection oldNodes
         9: .line 578
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        10: goto 16
        11: .line 579
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicInteger java.lang.Runnable java.lang.Thread java.util.Collection int
      StackMap stack:
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.getRootNodes:()Ljava/util/Collection;
            astore 7 /* newNodes */
        start local 7 // java.util.Collection newNodes
        12: .line 580
            aload 5 /* oldNodes */
            aload 7 /* newNodes */
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.isSuperset:(Ljava/util/Collection;Ljava/util/Collection;)V
        13: .line 581
            aload 7 /* newNodes */
            astore 5 /* oldNodes */
        14: .line 582
            aload 2 /* iterations */
            iconst_1
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.ensureIterations:(Ljava/util/concurrent/atomic/AtomicInteger;I)V
        end local 7 // java.util.Collection newNodes
        15: .line 578
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 6 /* i */
            iconst_5
            if_icmplt 11
        end local 6 // int i
        17: .line 584
            goto 21
      StackMap locals: com.oracle.truffle.tools.profiler.test.CPUSamplerTest java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicInteger java.lang.Runnable java.lang.Thread java.util.Collection
      StackMap stack: java.lang.Throwable
        18: astore 8
        19: .line 585
            aload 1 /* cancelled */
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
        20: .line 586
            aload 8
            athrow
        21: .line 585
      StackMap locals:
      StackMap stack:
            aload 1 /* cancelled */
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
        22: .line 587
            aload 4 /* execThread */
            ldc 10000
            invokevirtual java.lang.Thread.join:(J)V
        23: .line 588
            return
        end local 5 // java.util.Collection oldNodes
        end local 4 // java.lang.Thread execThread
        end local 3 // java.lang.Runnable runnable
        end local 2 // java.util.concurrent.atomic.AtomicInteger iterations
        end local 1 // java.util.concurrent.atomic.AtomicBoolean cancelled
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
            3   24     1   cancelled  Ljava/util/concurrent/atomic/AtomicBoolean;
            4   24     2  iterations  Ljava/util/concurrent/atomic/AtomicInteger;
            5   24     3    runnable  Ljava/lang/Runnable;
            6   24     4  execThread  Ljava/lang/Thread;
            9   24     5    oldNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
           10   17     6           i  I
           12   15     7    newNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
      Exception table:
        from    to  target  type
           9    18      18  any
    Exceptions:
      throws java.lang.InterruptedException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void ensureIterations(java.util.concurrent.atomic.AtomicInteger, int);
    descriptor: (Ljava/util/concurrent/atomic/AtomicInteger;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.concurrent.atomic.AtomicInteger iterations
        start local 1 // int numberIterations
         0: .line 591
            aload 0 /* iterations */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
         1: .line 592
            goto 3
         2: .line 593
      StackMap locals:
      StackMap stack:
            ldc 5
            invokestatic java.lang.Thread.sleep:(J)V
         3: .line 592
      StackMap locals:
      StackMap stack:
            aload 0 /* iterations */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iload 1 /* numberIterations */
            if_icmplt 2
         4: .line 595
            return
        end local 1 // int numberIterations
        end local 0 // java.util.concurrent.atomic.AtomicInteger iterations
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0        iterations  Ljava/util/concurrent/atomic/AtomicInteger;
            0    5     1  numberIterations  I
    Exceptions:
      throws java.lang.InterruptedException
    MethodParameters:
                  Name  Flags
      iterations        
      numberIterations  

  private static void isSuperset(java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>, java.util.Collection<com.oracle.truffle.tools.profiler.ProfilerNode<com.oracle.truffle.tools.profiler.CPUSampler$Payload>>);
    descriptor: (Ljava/util/Collection;Ljava/util/Collection;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.util.Collection firstRootNodes
        start local 1 // java.util.Collection secondRootNodes
         0: .line 598
            aload 0 /* firstRootNodes */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 16
      StackMap locals: java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 2 /* firstNode */
        start local 2 // com.oracle.truffle.tools.profiler.ProfilerNode firstNode
         2: .line 599
            aconst_null
            astore 4 /* secondNode */
        start local 4 // com.oracle.truffle.tools.profiler.ProfilerNode secondNode
         3: .line 600
            aload 1 /* secondRootNodes */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5 /* iterator */
        start local 5 // java.util.Iterator iterator
         4: .line 601
            goto 8
         5: .line 602
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator
      StackMap stack:
            aload 5 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.ProfilerNode
            astore 4 /* secondNode */
         6: .line 603
            aload 4 /* secondNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 2 /* firstNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.equals:(Ljava/lang/Object;)Z
            ifeq 8
            aload 4 /* secondNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            aload 2 /* firstNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getRootName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 604
            goto 9
         8: .line 601
      StackMap locals:
      StackMap stack:
            aload 5 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         9: .line 607
      StackMap locals:
      StackMap stack:
            ldc "Profile taken later in execution is not superset of earlier one"
            aload 4 /* secondNode */
            ifnull 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack: java.lang.String
        10: iconst_0
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator
      StackMap stack: java.lang.String int
        11: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        12: .line 608
            ldc "Profile taken later in execution is not superset of earlier one"
            aload 2 /* firstNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            aload 4 /* secondNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getPayload:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.profiler.CPUSampler$Payload
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler$Payload.getSelfHitCount:()I
            if_icmpgt 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack: java.lang.String
        13: iconst_0
      StackMap locals: java.util.Collection java.util.Collection com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator com.oracle.truffle.tools.profiler.ProfilerNode java.util.Iterator
      StackMap stack: java.lang.String int
        14: invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        15: .line 609
            aload 2 /* firstNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            aload 4 /* secondNode */
            invokevirtual com.oracle.truffle.tools.profiler.ProfilerNode.getChildren:()Ljava/util/Collection;
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.isSuperset:(Ljava/util/Collection;Ljava/util/Collection;)V
        end local 5 // java.util.Iterator iterator
        end local 4 // com.oracle.truffle.tools.profiler.ProfilerNode secondNode
        end local 2 // com.oracle.truffle.tools.profiler.ProfilerNode firstNode
        16: .line 598
      StackMap locals: java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        17: .line 611
            return
        end local 1 // java.util.Collection secondRootNodes
        end local 0 // java.util.Collection firstRootNodes
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   18     0   firstRootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            0   18     1  secondRootNodes  Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
            2   16     2        firstNode  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            3   16     4       secondNode  Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;
            4   16     5         iterator  Ljava/util/Iterator<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;
    Signature: (Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;Ljava/util/Collection<Lcom/oracle/truffle/tools/profiler/ProfilerNode<Lcom/oracle/truffle/tools/profiler/CPUSampler$Payload;>;>;)V
    MethodParameters:
                 Name  Flags
      firstRootNodes   
      secondRootNodes  

  public void testNegativePeriod();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 615
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$0()V (6)
                  ()V
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$1()V (6)
                  ()V
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.expectProfilerException:(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
         1: .line 616
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testNegativeDelay();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 620
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$2()V (6)
                  ()V
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$3()V (6)
                  ()V
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.expectProfilerException:(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
         1: .line 621
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testStackLimit();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 625
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$4()V (6)
                  ()V
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$5()V (6)
                  ()V
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.expectProfilerException:(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
         1: .line 626
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testClosedConfig();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
         0: .line 630
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$6()V (6)
                  ()V
         1: .line 633
            invokedynamic run()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/tools/profiler/test/CPUSamplerTest.lambda$7()V (6)
                  ()V
         2: .line 630
            invokestatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.expectProfilerException:(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
         3: .line 634
            return
        end local 0 // com.oracle.truffle.tools.profiler.test.CPUSamplerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/tools/profiler/test/CPUSamplerTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void lambda$0();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 615
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            ldc -1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setPeriod:(J)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$1();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 615
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$2();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 620
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            ldc -1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setDelay:(J)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$3();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 620
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$4();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 625
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_m1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setStackLimit:(I)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$5();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 625
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$6();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 631
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.close:()V
         1: .line 632
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            lconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setDelay:(J)V
         2: .line 633
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$7();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 633
            getstatic com.oracle.truffle.tools.profiler.test.CPUSamplerTest.sampler:Lcom/oracle/truffle/tools/profiler/CPUSampler;
            iconst_1
            invokevirtual com.oracle.truffle.tools.profiler.CPUSampler.setCollecting:(Z)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "CPUSamplerTest.java"
NestMembers:
  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$1  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$2  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$3  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$4  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$CallNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$DummyNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$RootNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$SRootNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$SamplerTestInstrumentableNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$SamplerTestNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$SleepNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$StartSamplerNode  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage$StatementNode
InnerClasses:
  public final Mode = com.oracle.truffle.tools.profiler.CPUSampler$Mode of com.oracle.truffle.tools.profiler.CPUSampler
  public final Payload = com.oracle.truffle.tools.profiler.CPUSampler$Payload of com.oracle.truffle.tools.profiler.CPUSampler
  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$1
  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$2
  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$3
  com.oracle.truffle.tools.profiler.test.CPUSamplerTest$4
  public RecreateShadowStackTestLanguage = com.oracle.truffle.tools.profiler.test.CPUSamplerTest$RecreateShadowStackTestLanguage of com.oracle.truffle.tools.profiler.test.CPUSamplerTest
  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