public final class com.oracle.truffle.tools.coverage.CoverageTracker implements java.lang.AutoCloseable
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.tools.coverage.CoverageTracker
  super_class: java.lang.Object
{
  private static final com.oracle.truffle.api.instrumentation.SourceSectionFilter DEFAULT_FILTER;
    descriptor: Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.List<com.oracle.truffle.tools.coverage.AbstractCoverageNode> coverageNodes;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;>;

  private final java.util.List<com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent> loadedRoots;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;>;

  private final java.util.List<com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent> loadedStatements;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;>;

  private final com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env;
    descriptor: Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean tracking;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean closed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.LoadSourceSectionListener> loadedRootsBinding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;>;

  private com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory> coveredBinding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;

  private com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.LoadSourceSectionListener> loadedStatementBinding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;>;

  private com.oracle.truffle.api.Assumption noReset;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_0
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.includeInternal:(Z)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            putstatic com.oracle.truffle.tools.coverage.CoverageTracker.DEFAULT_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
         1: .line 59
            new com.oracle.truffle.tools.coverage.CoverageTracker$1
            dup
            invokespecial com.oracle.truffle.tools.coverage.CoverageTracker$1.<init>:()V
            invokestatic com.oracle.truffle.tools.coverage.impl.CoverageInstrument.setFactory:(Ljava/util/function/Function;)V
         2: .line 66
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.oracle.truffle.api.instrumentation.TruffleInstrument$Env);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 68
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.coverageNodes:Ljava/util/List;
         2: .line 69
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedRoots:Ljava/util/List;
         3: .line 70
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedStatements:Ljava/util/List;
         4: .line 80
            aload 0 /* this */
            aload 1 /* env */
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
         5: .line 81
            return
        end local 1 // com.oracle.truffle.api.instrumentation.TruffleInstrument$Env env
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    6     1   env  Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
    MethodParameters:
      Name  Flags
      env   

  private static com.oracle.truffle.tools.coverage.SourceCoverage[] sourceCoverage(java.util.Map<com.oracle.truffle.api.source.Source, java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>>);
    descriptor: (Ljava/util/Map;)[Lcom/oracle/truffle/tools/coverage/SourceCoverage;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // java.util.Map mapping
         0: .line 84
            aload 0 /* mapping */
            invokeinterface java.util.Map.size:()I
            anewarray com.oracle.truffle.tools.coverage.SourceCoverage
            astore 1 /* coverage */
        start local 1 // com.oracle.truffle.tools.coverage.SourceCoverage[] coverage
         1: .line 85
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: .line 86
            aload 0 /* mapping */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: java.util.Map com.oracle.truffle.tools.coverage.SourceCoverage[] int top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* entry */
        start local 3 // java.util.Map$Entry entry
         4: .line 87
            aload 1 /* coverage */
            iload 2 /* i */
            iinc 2 /* i */ 1
            new com.oracle.truffle.tools.coverage.SourceCoverage
            dup
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.source.Source
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.Map
            invokestatic com.oracle.truffle.tools.coverage.CoverageTracker.rootCoverage:(Ljava/util/Map;)[Lcom/oracle/truffle/tools/coverage/RootCoverage;
            invokespecial com.oracle.truffle.tools.coverage.SourceCoverage.<init>:(Lcom/oracle/truffle/api/source/Source;[Lcom/oracle/truffle/tools/coverage/RootCoverage;)V
            aastore
        end local 3 // java.util.Map$Entry entry
         5: .line 86
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 89
            aload 1 /* coverage */
            areturn
        end local 2 // int i
        end local 1 // com.oracle.truffle.tools.coverage.SourceCoverage[] coverage
        end local 0 // java.util.Map mapping
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0   mapping  Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
            1    7     1  coverage  [Lcom/oracle/truffle/tools/coverage/SourceCoverage;
            2    7     2         i  I
            4    5     3     entry  Ljava/util/Map$Entry<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
    Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;)[Lcom/oracle/truffle/tools/coverage/SourceCoverage;
    MethodParameters:
         Name  Flags
      mapping  

  private static com.oracle.truffle.tools.coverage.RootCoverage[] rootCoverage(java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>);
    descriptor: (Ljava/util/Map;)[Lcom/oracle/truffle/tools/coverage/RootCoverage;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=6, args_size=1
        start local 0 // java.util.Map perRootData
         0: .line 93
            aload 0 /* perRootData */
            invokeinterface java.util.Map.size:()I
            anewarray com.oracle.truffle.tools.coverage.RootCoverage
            astore 1 /* rootCoverage */
        start local 1 // com.oracle.truffle.tools.coverage.RootCoverage[] rootCoverage
         1: .line 94
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: .line 95
            aload 0 /* perRootData */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 8
      StackMap locals: java.util.Map com.oracle.truffle.tools.coverage.RootCoverage[] int top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* entry */
        start local 3 // java.util.Map$Entry entry
         4: .line 96
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.coverage.CoverageTracker$RootData
            astore 5 /* rootData */
        start local 5 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
         5: .line 97
            aload 1 /* rootCoverage */
            iload 2 /* i */
            iinc 2 /* i */ 1
            new com.oracle.truffle.tools.coverage.RootCoverage
            dup
            aload 5 /* rootData */
            invokestatic com.oracle.truffle.tools.coverage.CoverageTracker.sectionCoverage:(Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;)[Lcom/oracle/truffle/tools/coverage/SectionCoverage;
         6: .line 98
            aload 5 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.covered:Z
            aload 5 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.count:J
            aload 5 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.sourceSection:Lcom/oracle/truffle/api/source/SourceSection;
            aload 5 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.name:Ljava/lang/String;
            invokespecial com.oracle.truffle.tools.coverage.RootCoverage.<init>:([Lcom/oracle/truffle/tools/coverage/SectionCoverage;ZJLcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
         7: .line 97
            aastore
        end local 5 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
        end local 3 // java.util.Map$Entry entry
         8: .line 95
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         9: .line 100
            aload 1 /* rootCoverage */
            areturn
        end local 2 // int i
        end local 1 // com.oracle.truffle.tools.coverage.RootCoverage[] rootCoverage
        end local 0 // java.util.Map perRootData
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0   perRootData  Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;
            1   10     1  rootCoverage  [Lcom/oracle/truffle/tools/coverage/RootCoverage;
            2   10     2             i  I
            4    8     3         entry  Ljava/util/Map$Entry<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;
            5    8     5      rootData  Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;
    Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;)[Lcom/oracle/truffle/tools/coverage/RootCoverage;
    MethodParameters:
             Name  Flags
      perRootData  

  private static com.oracle.truffle.tools.coverage.SectionCoverage[] sectionCoverage(com.oracle.truffle.tools.coverage.CoverageTracker$RootData);
    descriptor: (Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;)[Lcom/oracle/truffle/tools/coverage/SectionCoverage;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
         0: .line 104
            aload 0 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.loadedStatements:Ljava/util/Set;
            astore 1 /* loadedStatements */
        start local 1 // java.util.Set loadedStatements
         1: .line 105
            aload 1 /* loadedStatements */
            invokeinterface java.util.Set.size:()I
            anewarray com.oracle.truffle.tools.coverage.SectionCoverage
            astore 2 /* sectionCoverage */
        start local 2 // com.oracle.truffle.tools.coverage.SectionCoverage[] sectionCoverage
         2: .line 106
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: .line 107
            aload 1 /* loadedStatements */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 12
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData java.util.Set com.oracle.truffle.tools.coverage.SectionCoverage[] int top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.source.SourceSection
            astore 4 /* statement */
        start local 4 // com.oracle.truffle.api.source.SourceSection statement
         5: .line 108
            aload 0 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.coveredStatements:Ljava/util/Map;
            aload 4 /* statement */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 6 /* count */
        start local 6 // java.lang.Long count
         6: .line 109
            aload 2 /* sectionCoverage */
            iload 3 /* i */
            iinc 3 /* i */ 1
         7: new com.oracle.truffle.tools.coverage.SectionCoverage
            dup
            aload 4 /* statement */
            aload 6 /* count */
            ifnull 8
            iconst_1
            goto 9
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData java.util.Set com.oracle.truffle.tools.coverage.SectionCoverage[] int com.oracle.truffle.api.source.SourceSection java.util.Iterator java.lang.Long
      StackMap stack: com.oracle.truffle.tools.coverage.SectionCoverage[] int new 7 new 7 com.oracle.truffle.api.source.SourceSection
         8: iconst_0
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData java.util.Set com.oracle.truffle.tools.coverage.SectionCoverage[] int com.oracle.truffle.api.source.SourceSection java.util.Iterator java.lang.Long
      StackMap stack: com.oracle.truffle.tools.coverage.SectionCoverage[] int new 7 new 7 com.oracle.truffle.api.source.SourceSection int
         9: aload 6 /* count */
            ifnonnull 10
            ldc -1
            goto 11
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData java.util.Set com.oracle.truffle.tools.coverage.SectionCoverage[] int com.oracle.truffle.api.source.SourceSection java.util.Iterator java.lang.Long
      StackMap stack: com.oracle.truffle.tools.coverage.SectionCoverage[] int new 7 new 7 com.oracle.truffle.api.source.SourceSection int
        10: aload 6 /* count */
            invokevirtual java.lang.Long.longValue:()J
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData java.util.Set com.oracle.truffle.tools.coverage.SectionCoverage[] int com.oracle.truffle.api.source.SourceSection java.util.Iterator java.lang.Long
      StackMap stack: com.oracle.truffle.tools.coverage.SectionCoverage[] int new 7 new 7 com.oracle.truffle.api.source.SourceSection int long
        11: invokespecial com.oracle.truffle.tools.coverage.SectionCoverage.<init>:(Lcom/oracle/truffle/api/source/SourceSection;ZJ)V
            aastore
        end local 6 // java.lang.Long count
        end local 4 // com.oracle.truffle.api.source.SourceSection statement
        12: .line 107
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData java.util.Set com.oracle.truffle.tools.coverage.SectionCoverage[] int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        13: .line 111
            aload 2 /* sectionCoverage */
            areturn
        end local 3 // int i
        end local 2 // com.oracle.truffle.tools.coverage.SectionCoverage[] sectionCoverage
        end local 1 // java.util.Set loadedStatements
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   14     0          rootData  Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;
            1   14     1  loadedStatements  Ljava/util/Set<Lcom/oracle/truffle/api/source/SourceSection;>;
            2   14     2   sectionCoverage  [Lcom/oracle/truffle/tools/coverage/SectionCoverage;
            3   14     3                 i  I
            5   12     4         statement  Lcom/oracle/truffle/api/source/SourceSection;
            6   12     6             count  Ljava/lang/Long;
    MethodParameters:
          Name  Flags
      rootData  

  private static com.oracle.truffle.tools.coverage.AbstractCoverageNode makeCoverageNode(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.tools.coverage.CoverageTracker$Config, com.oracle.truffle.api.Assumption);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;Lcom/oracle/truffle/api/Assumption;)Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        start local 2 // com.oracle.truffle.api.Assumption noReset
         0: .line 115
            aload 0 /* context */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.hasTag:(Ljava/lang/Class;)Z
            istore 3 /* isRoot */
        start local 3 // boolean isRoot
         1: .line 116
            aload 0 /* context */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.hasTag:(Ljava/lang/Class;)Z
            istore 4 /* isStatement */
        start local 4 // boolean isStatement
         2: .line 117
            aload 1 /* config */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$Config.count:Z
            ifeq 4
         3: .line 118
            new com.oracle.truffle.tools.coverage.CountingCoverageNode
            dup
            aload 0 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 0 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            iload 3 /* isRoot */
            iload 4 /* isStatement */
            invokespecial com.oracle.truffle.tools.coverage.CountingCoverageNode.<init>:(Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;ZZ)V
            areturn
         4: .line 120
      StackMap locals: int int
      StackMap stack:
            new com.oracle.truffle.tools.coverage.BooleanCoverageNode
            dup
            aload 0 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 0 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            iload 3 /* isRoot */
            iload 4 /* isStatement */
            aload 2 /* noReset */
            invokespecial com.oracle.truffle.tools.coverage.BooleanCoverageNode.<init>:(Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;ZZLcom/oracle/truffle/api/Assumption;)V
            areturn
        end local 4 // boolean isStatement
        end local 3 // boolean isRoot
        end local 2 // com.oracle.truffle.api.Assumption noReset
        end local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        end local 0 // com.oracle.truffle.api.instrumentation.EventContext context
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0      context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    5     1       config  Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;
            0    5     2      noReset  Lcom/oracle/truffle/api/Assumption;
            1    5     3       isRoot  Z
            2    5     4  isStatement  Z
    MethodParameters:
         Name  Flags
      context  
      config   
      noReset  

  private static long getCount(com.oracle.truffle.tools.coverage.AbstractCoverageNode);
    descriptor: (Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.AbstractCoverageNode coverageNode
         0: .line 125
            aload 0 /* coverageNode */
            instanceof com.oracle.truffle.tools.coverage.CountingCoverageNode
            ifeq 1
            aload 0 /* coverageNode */
            checkcast com.oracle.truffle.tools.coverage.CountingCoverageNode
            invokevirtual com.oracle.truffle.tools.coverage.CountingCoverageNode.getCount:()J
            goto 2
      StackMap locals:
      StackMap stack:
         1: ldc -1
      StackMap locals:
      StackMap stack: long
         2: lreturn
        end local 0 // com.oracle.truffle.tools.coverage.AbstractCoverageNode coverageNode
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  coverageNode  Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;
    MethodParameters:
              Name  Flags
      coverageNode  

  public synchronized void start(com.oracle.truffle.tools.coverage.CoverageTracker$Config);
    descriptor: (Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
         0: .line 137
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.closed:Z
            ifeq 2
         1: .line 138
            new java.lang.IllegalStateException
            dup
            ldc "Coverage Tracker is closed"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.tracking:Z
            ifeq 4
         3: .line 141
            new java.lang.IllegalStateException
            dup
            ldc "Coverage Tracker is already tracking"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.clearData:()V
         5: .line 144
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.tracking:Z
         6: .line 145
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            ldc "No reset assumption"
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.noReset:Lcom/oracle/truffle/api/Assumption;
         7: .line 146
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.env:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            astore 2 /* instrumenter */
        start local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
         8: .line 147
            aload 0 /* this */
            aload 1 /* config */
            aload 2 /* instrumenter */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.instrument:(Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;Lcom/oracle/truffle/api/instrumentation/Instrumenter;)V
         9: .line 148
            return
        end local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0   10     1        config  Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;
            8   10     2  instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
    MethodParameters:
        Name  Flags
      config  

  private synchronized void clearData();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
         0: .line 151
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedRoots:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         1: .line 152
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedStatements:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         2: .line 153
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.coverageNodes:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         3: .line 154
            return
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;

  public synchronized void end();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
         0: .line 164
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.tracking:Z
            ifne 2
         1: .line 165
            new java.lang.IllegalStateException
            dup
            ldc "Coverage tracker is not tracking"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.tracking:Z
         3: .line 168
            aload 0 /* this */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.disposeBindings:()V
         4: .line 169
            return
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;

  public synchronized com.oracle.truffle.tools.coverage.SourceCoverage[] getCoverage();
    descriptor: ()[Lcom/oracle/truffle/tools/coverage/SourceCoverage;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
         0: .line 176
            aload 0 /* this */
            iconst_0
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.mapping:(Z)Ljava/util/Map;
            invokestatic com.oracle.truffle.tools.coverage.CoverageTracker.sourceCoverage:(Ljava/util/Map;)[Lcom/oracle/truffle/tools/coverage/SourceCoverage;
            areturn
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;

  public synchronized com.oracle.truffle.tools.coverage.SourceCoverage[] resetCoverage();
    descriptor: ()[Lcom/oracle/truffle/tools/coverage/SourceCoverage;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
         0: .line 187
            aload 0 /* this */
            iconst_1
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.mapping:(Z)Ljava/util/Map;
            invokestatic com.oracle.truffle.tools.coverage.CoverageTracker.sourceCoverage:(Ljava/util/Map;)[Lcom/oracle/truffle/tools/coverage/SourceCoverage;
            astore 1 /* coverages */
        start local 1 // com.oracle.truffle.tools.coverage.SourceCoverage[] coverages
         1: .line 188
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.noReset:Lcom/oracle/truffle/api/Assumption;
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
         2: .line 189
            aload 1 /* coverages */
            areturn
        end local 1 // com.oracle.truffle.tools.coverage.SourceCoverage[] coverages
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            1    3     1  coverages  [Lcom/oracle/truffle/tools/coverage/SourceCoverage;

  private java.util.Map<com.oracle.truffle.api.source.Source, java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>> mapping(boolean);
    descriptor: (Z)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // boolean reset
         0: .line 193
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* sourceCoverage */
        start local 2 // java.util.Map sourceCoverage
         1: .line 194
            aload 0 /* this */
            aload 2 /* sourceCoverage */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.processLoaded:(Ljava/util/Map;)V
         2: .line 195
            aload 0 /* this */
            aload 2 /* sourceCoverage */
            iload 1 /* reset */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.processCovered:(Ljava/util/Map;Z)V
         3: .line 196
            aload 2 /* sourceCoverage */
            areturn
        end local 2 // java.util.Map sourceCoverage
        end local 1 // boolean reset
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    4     1           reset  Z
            1    4     2  sourceCoverage  Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
    Signature: (Z)Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
    MethodParameters:
       Name  Flags
      reset  

  private void processLoaded(java.util.Map<com.oracle.truffle.api.source.Source, java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // java.util.Map sourceCoverage
         0: .line 200
            aload 0 /* this */
            aload 1 /* sourceCoverage */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.processLoadedRoots:(Ljava/util/Map;)V
         1: .line 201
            aload 0 /* this */
            aload 1 /* sourceCoverage */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.processLoadedSections:(Ljava/util/Map;)V
         2: .line 202
            return
        end local 1 // java.util.Map sourceCoverage
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    3     1  sourceCoverage  Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
    Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;)V
    MethodParameters:
                Name  Flags
      sourceCoverage  

  private void processLoadedSections(java.util.Map<com.oracle.truffle.api.source.Source, java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=10, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // java.util.Map sourceCoverage
         0: .line 205
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedStatements:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent
            astore 2 /* loadedEvent */
        start local 2 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent loadedEvent
         2: .line 206
            aload 2 /* loadedEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 4 /* section */
        start local 4 // com.oracle.truffle.api.source.SourceSection section
         3: .line 207
            aload 4 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            astore 5 /* source */
        start local 5 // com.oracle.truffle.api.source.Source source
         4: .line 208
            aload 2 /* loadedEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getNode:()Lcom/oracle/truffle/api/nodes/Node;
            astore 6 /* node */
        start local 6 // com.oracle.truffle.api.nodes.Node node
         5: .line 209
            aload 6 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            astore 7 /* rootNode */
        start local 7 // com.oracle.truffle.api.nodes.RootNode rootNode
         6: .line 210
            aload 1 /* sourceCoverage */
            aload 5 /* source */
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/tools/coverage/CoverageTracker.lambda$0(Lcom/oracle/truffle/api/source/Source;)Ljava/util/Map; (6)
                  (Lcom/oracle/truffle/api/source/Source;)Ljava/util/Map;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 8 /* perSourceData */
        start local 8 // java.util.Map perSourceData
         7: .line 211
            aload 8 /* perSourceData */
            aload 7 /* rootNode */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 7 /* rootNode */
            invokedynamic apply(Lcom/oracle/truffle/api/nodes/RootNode;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/tools/coverage/CoverageTracker.lambda$1(Lcom/oracle/truffle/api/nodes/RootNode;Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData; (6)
                  (Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.coverage.CoverageTracker$RootData
            astore 9 /* rootData */
        start local 9 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
         8: .line 212
            aload 9 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.loadedStatements:Ljava/util/Set;
            aload 4 /* section */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
        end local 8 // java.util.Map perSourceData
        end local 7 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 6 // com.oracle.truffle.api.nodes.Node node
        end local 5 // com.oracle.truffle.api.source.Source source
        end local 4 // com.oracle.truffle.api.source.SourceSection section
        end local 2 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent loadedEvent
         9: .line 205
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        10: .line 214
            return
        end local 1 // java.util.Map sourceCoverage
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0   11     1  sourceCoverage  Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
            2    9     2     loadedEvent  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
            3    9     4         section  Lcom/oracle/truffle/api/source/SourceSection;
            4    9     5          source  Lcom/oracle/truffle/api/source/Source;
            5    9     6            node  Lcom/oracle/truffle/api/nodes/Node;
            6    9     7        rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            7    9     8   perSourceData  Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;
            8    9     9        rootData  Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;
    Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;)V
    MethodParameters:
                Name  Flags
      sourceCoverage  

  private void processLoadedRoots(java.util.Map<com.oracle.truffle.api.source.Source, java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // java.util.Map sourceCoverage
         0: .line 217
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedRoots:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 10
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent
            astore 2 /* loadedEvent */
        start local 2 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent loadedEvent
         2: .line 218
            aload 2 /* loadedEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 4 /* section */
        start local 4 // com.oracle.truffle.api.source.SourceSection section
         3: .line 219
            aload 4 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            astore 5 /* source */
        start local 5 // com.oracle.truffle.api.source.Source source
         4: .line 220
            aload 1 /* sourceCoverage */
            aload 5 /* source */
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/tools/coverage/CoverageTracker.lambda$2(Lcom/oracle/truffle/api/source/Source;)Ljava/util/Map; (6)
                  (Lcom/oracle/truffle/api/source/Source;)Ljava/util/Map;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 6 /* perRootData */
        start local 6 // java.util.Map perRootData
         5: .line 221
            aload 2 /* loadedEvent */
            invokevirtual com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent.getNode:()Lcom/oracle/truffle/api/nodes/Node;
            astore 7 /* node */
        start local 7 // com.oracle.truffle.api.nodes.Node node
         6: .line 222
            aload 7 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            astore 8 /* rootNode */
        start local 8 // com.oracle.truffle.api.nodes.RootNode rootNode
         7: .line 223
            aload 8 /* rootNode */
            ifnonnull 9
         8: .line 224
            goto 10
         9: .line 226
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent java.util.Iterator com.oracle.truffle.api.source.SourceSection com.oracle.truffle.api.source.Source java.util.Map com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.nodes.RootNode
      StackMap stack:
            aload 6 /* perRootData */
            aload 8 /* rootNode */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            new com.oracle.truffle.tools.coverage.CoverageTracker$RootData
            dup
            aload 4 /* section */
            aload 8 /* rootNode */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getName:()Ljava/lang/String;
            invokespecial com.oracle.truffle.tools.coverage.CoverageTracker$RootData.<init>:(Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 7 // com.oracle.truffle.api.nodes.Node node
        end local 6 // java.util.Map perRootData
        end local 5 // com.oracle.truffle.api.source.Source source
        end local 4 // com.oracle.truffle.api.source.SourceSection section
        end local 2 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent loadedEvent
        10: .line 217
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        11: .line 228
            return
        end local 1 // java.util.Map sourceCoverage
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0            this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0   12     1  sourceCoverage  Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
            2   10     2     loadedEvent  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
            3   10     4         section  Lcom/oracle/truffle/api/source/SourceSection;
            4   10     5          source  Lcom/oracle/truffle/api/source/Source;
            5   10     6     perRootData  Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;
            6   10     7            node  Lcom/oracle/truffle/api/nodes/Node;
            7   10     8        rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
    Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;)V
    MethodParameters:
                Name  Flags
      sourceCoverage  

  private void processCovered(java.util.Map<com.oracle.truffle.api.source.Source, java.util.Map<com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.tools.coverage.CoverageTracker$RootData>>, );
    descriptor: (Ljava/util/Map;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=12, args_size=3
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // java.util.Map mapping
        start local 2 // boolean reset
         0: .line 231
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.coverageNodes:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 18
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map int top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.coverage.AbstractCoverageNode
            astore 3 /* coverageNode */
        start local 3 // com.oracle.truffle.tools.coverage.AbstractCoverageNode coverageNode
         2: .line 232
            aload 3 /* coverageNode */
            getfield com.oracle.truffle.tools.coverage.AbstractCoverageNode.sourceSection:Lcom/oracle/truffle/api/source/SourceSection;
            astore 5 /* section */
        start local 5 // com.oracle.truffle.api.source.SourceSection section
         3: .line 233
            aload 5 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            astore 6 /* source */
        start local 6 // com.oracle.truffle.api.source.Source source
         4: .line 234
            aload 3 /* coverageNode */
            getfield com.oracle.truffle.tools.coverage.AbstractCoverageNode.instrumentedNode:Lcom/oracle/truffle/api/nodes/Node;
            astore 7 /* node */
        start local 7 // com.oracle.truffle.api.nodes.Node node
         5: .line 235
            aload 7 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            astore 8 /* rootNode */
        start local 8 // com.oracle.truffle.api.nodes.RootNode rootNode
         6: .line 236
            aload 8 /* rootNode */
            ifnull 18
            aload 3 /* coverageNode */
            invokevirtual com.oracle.truffle.tools.coverage.AbstractCoverageNode.isCovered:()Z
            ifne 8
         7: .line 237
            goto 18
         8: .line 239
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map int com.oracle.truffle.tools.coverage.AbstractCoverageNode java.util.Iterator com.oracle.truffle.api.source.SourceSection com.oracle.truffle.api.source.Source com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.nodes.RootNode
      StackMap stack:
            aload 1 /* mapping */
            aload 6 /* source */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            aload 8 /* rootNode */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.tools.coverage.CoverageTracker$RootData
            astore 9 /* rootData */
        start local 9 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
         9: .line 240
            aload 3 /* coverageNode */
            invokestatic com.oracle.truffle.tools.coverage.CoverageTracker.getCount:(Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;)J
            lstore 10 /* count */
        start local 10 // long count
        10: .line 241
            aload 3 /* coverageNode */
            getfield com.oracle.truffle.tools.coverage.AbstractCoverageNode.isRoot:Z
            ifeq 14
            aload 3 /* coverageNode */
            invokevirtual com.oracle.truffle.tools.coverage.AbstractCoverageNode.isCovered:()Z
            ifeq 14
        11: .line 242
            aload 9 /* rootData */
            iconst_1
            putfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.covered:Z
        12: .line 243
            aload 9 /* rootData */
            lload 10 /* count */
            putfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.count:J
        13: .line 244
            goto 16
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker$RootData long
      StackMap stack:
        14: aload 3 /* coverageNode */
            getfield com.oracle.truffle.tools.coverage.AbstractCoverageNode.isStatement:Z
            ifeq 16
        15: .line 245
            aload 9 /* rootData */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$RootData.coveredStatements:Ljava/util/Map;
            aload 5 /* section */
            lload 10 /* count */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 247
      StackMap locals:
      StackMap stack:
            iload 2 /* reset */
            ifeq 18
        17: .line 248
            aload 3 /* coverageNode */
            invokevirtual com.oracle.truffle.tools.coverage.AbstractCoverageNode.reset:()V
        end local 10 // long count
        end local 9 // com.oracle.truffle.tools.coverage.CoverageTracker$RootData rootData
        end local 8 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 7 // com.oracle.truffle.api.nodes.Node node
        end local 6 // com.oracle.truffle.api.source.Source source
        end local 5 // com.oracle.truffle.api.source.SourceSection section
        end local 3 // com.oracle.truffle.tools.coverage.AbstractCoverageNode coverageNode
        18: .line 231
      StackMap locals: com.oracle.truffle.tools.coverage.CoverageTracker java.util.Map int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        19: .line 251
            return
        end local 2 // boolean reset
        end local 1 // java.util.Map mapping
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   20     0          this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0   20     1       mapping  Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;
            0   20     2         reset  Z
            2   18     3  coverageNode  Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;
            3   18     5       section  Lcom/oracle/truffle/api/source/SourceSection;
            4   18     6        source  Lcom/oracle/truffle/api/source/Source;
            5   18     7          node  Lcom/oracle/truffle/api/nodes/Node;
            6   18     8      rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            9   18     9      rootData  Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;
           10   18    10         count  J
    Signature: (Ljava/util/Map<Lcom/oracle/truffle/api/source/Source;Ljava/util/Map<Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;>;>;Z)V
    MethodParameters:
         Name  Flags
      mapping  
      reset    

  public synchronized void close();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
         0: .line 260
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.closed:Z
         1: .line 261
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.tracking:Z
            ifeq 3
         2: .line 262
            aload 0 /* this */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.end:()V
         3: .line 264
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;

  private void instrument(com.oracle.truffle.tools.coverage.CoverageTracker$Config, com.oracle.truffle.api.instrumentation.Instrumenter);
    descriptor: (Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;Lcom/oracle/truffle/api/instrumentation/Instrumenter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        start local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
         0: .line 267
            aload 1 /* config */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker$Config.sourceSectionFilter:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 3 /* f */
        start local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
         1: .line 268
            aload 3 /* f */
            ifnonnull 3
         2: .line 269
            getstatic com.oracle.truffle.tools.coverage.CoverageTracker.DEFAULT_FILTER:Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 3 /* f */
         3: .line 271
      StackMap locals: com.oracle.truffle.api.instrumentation.SourceSectionFilter
      StackMap stack:
            aload 0 /* this */
            aload 2 /* instrumenter */
            aload 3 /* f */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.instrumentLoadedRoots:(Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         4: .line 272
            aload 0 /* this */
            aload 2 /* instrumenter */
            aload 3 /* f */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.instrumentLoadedStatements:(Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         5: .line 273
            aload 0 /* this */
            aload 1 /* config */
            aload 2 /* instrumenter */
            aload 3 /* f */
            invokevirtual com.oracle.truffle.tools.coverage.CoverageTracker.instrumentExecution:(Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
         6: .line 275
            return
        end local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
        end local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    7     1        config  Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;
            0    7     2  instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            1    7     3             f  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    MethodParameters:
              Name  Flags
      config        
      instrumenter  

  private void instrumentExecution(com.oracle.truffle.tools.coverage.CoverageTracker$Config, com.oracle.truffle.api.instrumentation.Instrumenter, com.oracle.truffle.api.instrumentation.SourceSectionFilter);
    descriptor: (Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        start local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        start local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
         0: .line 278
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            aload 3 /* f */
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.and:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 4 /* filter */
        start local 4 // com.oracle.truffle.api.instrumentation.SourceSectionFilter filter
         1: .line 279
            aload 0 /* this */
            aload 2 /* instrumenter */
            aload 4 /* filter */
            new com.oracle.truffle.tools.coverage.CoverageTracker$2
            dup
            aload 0 /* this */
            aload 1 /* config */
            invokespecial com.oracle.truffle.tools.coverage.CoverageTracker$2.<init>:(Lcom/oracle/truffle/tools/coverage/CoverageTracker;Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.coveredBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         2: .line 287
            return
        end local 4 // com.oracle.truffle.api.instrumentation.SourceSectionFilter filter
        end local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
        end local 2 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 1 // com.oracle.truffle.tools.coverage.CoverageTracker$Config config
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    3     1        config  Lcom/oracle/truffle/tools/coverage/CoverageTracker$Config;
            0    3     2  instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            0    3     3             f  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            1    3     4        filter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    MethodParameters:
              Name  Flags
      config        
      instrumenter  
      f             

  private synchronized void addCoverageNode(com.oracle.truffle.tools.coverage.AbstractCoverageNode);
    descriptor: (Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.tools.coverage.AbstractCoverageNode coverageNode
         0: .line 290
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.coverageNodes:Ljava/util/List;
            aload 1 /* coverageNode */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 291
            return
        end local 1 // com.oracle.truffle.tools.coverage.AbstractCoverageNode coverageNode
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    2     1  coverageNode  Lcom/oracle/truffle/tools/coverage/AbstractCoverageNode;
    MethodParameters:
              Name  Flags
      coverageNode  

  private void instrumentLoadedStatements(com.oracle.truffle.api.instrumentation.Instrumenter, com.oracle.truffle.api.instrumentation.SourceSectionFilter);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        start local 2 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
         0: .line 294
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            aload 2 /* f */
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.and:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 3 /* statementFilter */
        start local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter statementFilter
         1: .line 295
            aload 0 /* this */
            aload 1 /* instrumenter */
            aload 3 /* statementFilter */
            new com.oracle.truffle.tools.coverage.CoverageTracker$3
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.tools.coverage.CoverageTracker$3.<init>:(Lcom/oracle/truffle/tools/coverage/CoverageTracker;)V
         2: .line 300
            iconst_1
         3: .line 295
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedStatementBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         4: .line 301
            return
        end local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter statementFilter
        end local 2 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
        end local 1 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    5     1     instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            0    5     2                f  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            1    5     3  statementFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    MethodParameters:
              Name  Flags
      instrumenter  
      f             

  private void instrumentLoadedRoots(com.oracle.truffle.api.instrumentation.Instrumenter, com.oracle.truffle.api.instrumentation.SourceSectionFilter);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/Instrumenter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        start local 2 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
         0: .line 304
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            aload 2 /* f */
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.and:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 3 /* rootFilter */
        start local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter rootFilter
         1: .line 305
            aload 0 /* this */
            aload 1 /* instrumenter */
            aload 3 /* rootFilter */
            new com.oracle.truffle.tools.coverage.CoverageTracker$4
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.tools.coverage.CoverageTracker$4.<init>:(Lcom/oracle/truffle/tools/coverage/CoverageTracker;)V
         2: .line 310
            iconst_1
         3: .line 305
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachLoadSourceSectionListener:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            putfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedRootsBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         4: .line 311
            return
        end local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter rootFilter
        end local 2 // com.oracle.truffle.api.instrumentation.SourceSectionFilter f
        end local 1 // com.oracle.truffle.api.instrumentation.Instrumenter instrumenter
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    5     1  instrumenter  Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            0    5     2             f  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            1    5     3    rootFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    MethodParameters:
              Name  Flags
      instrumenter  
      f             

  private synchronized void addRoot(com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent event
         0: .line 314
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedRoots:Ljava/util/List;
            aload 1 /* event */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 315
            return
        end local 1 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent event
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    2     1  event  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
    MethodParameters:
       Name  Flags
      event  

  private synchronized void addStatement(com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
        start local 1 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent event
         0: .line 318
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedStatements:Ljava/util/List;
            aload 1 /* event */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 319
            return
        end local 1 // com.oracle.truffle.api.instrumentation.LoadSourceSectionEvent event
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;
            0    2     1  event  Lcom/oracle/truffle/api/instrumentation/LoadSourceSectionEvent;
    MethodParameters:
       Name  Flags
      event  

  private void disposeBindings();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
         0: .line 322
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedRootsBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         1: .line 323
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.loadedStatementBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         2: .line 324
            aload 0 /* this */
            getfield com.oracle.truffle.tools.coverage.CoverageTracker.coveredBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         3: .line 325
            return
        end local 0 // com.oracle.truffle.tools.coverage.CoverageTracker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/tools/coverage/CoverageTracker;

  private static java.util.Map lambda$0(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Ljava/util/Map;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.source.Source s
         0: .line 210
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            areturn
        end local 0 // com.oracle.truffle.api.source.Source s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     s  Lcom/oracle/truffle/api/source/Source;

  private static com.oracle.truffle.tools.coverage.CoverageTracker$RootData lambda$1(com.oracle.truffle.api.nodes.RootNode, com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/nodes/RootNode;Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/tools/coverage/CoverageTracker$RootData;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 1 // com.oracle.truffle.api.source.SourceSection s
         0: .line 211
            new com.oracle.truffle.tools.coverage.CoverageTracker$RootData
            dup
            aload 1 /* s */
            aload 0
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getName:()Ljava/lang/String;
            invokespecial com.oracle.truffle.tools.coverage.CoverageTracker$RootData.<init>:(Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
            areturn
        end local 1 // com.oracle.truffle.api.source.SourceSection s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1     s  Lcom/oracle/truffle/api/source/SourceSection;

  private static java.util.Map lambda$2(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Ljava/util/Map;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.source.Source s
         0: .line 220
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            areturn
        end local 0 // com.oracle.truffle.api.source.Source s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     s  Lcom/oracle/truffle/api/source/Source;
}
SourceFile: "CoverageTracker.java"
NestMembers:
  com.oracle.truffle.tools.coverage.CoverageTracker$1  com.oracle.truffle.tools.coverage.CoverageTracker$2  com.oracle.truffle.tools.coverage.CoverageTracker$3  com.oracle.truffle.tools.coverage.CoverageTracker$4  com.oracle.truffle.tools.coverage.CoverageTracker$Config  com.oracle.truffle.tools.coverage.CoverageTracker$RootData
InnerClasses:
  public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
  public final RootTag = com.oracle.truffle.api.instrumentation.StandardTags$RootTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final StatementTag = com.oracle.truffle.api.instrumentation.StandardTags$StatementTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  com.oracle.truffle.tools.coverage.CoverageTracker$1
  com.oracle.truffle.tools.coverage.CoverageTracker$2
  com.oracle.truffle.tools.coverage.CoverageTracker$3
  com.oracle.truffle.tools.coverage.CoverageTracker$4
  public Config = com.oracle.truffle.tools.coverage.CoverageTracker$Config of com.oracle.truffle.tools.coverage.CoverageTracker
  private RootData = com.oracle.truffle.tools.coverage.CoverageTracker$RootData of com.oracle.truffle.tools.coverage.CoverageTracker
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map