class com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch this
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/DefaultNearestNodeSearch;

  static com.oracle.truffle.api.nodes.Node findNearestNodeAt(int, com.oracle.truffle.api.nodes.Node, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (ILcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // int offset
        start local 1 // com.oracle.truffle.api.nodes.Node contextNode
        start local 2 // java.util.Set tags
         0: .line 85
            aload 1 /* contextNode */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode
            aload 2 /* tags */
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.materializeInstrumentableNodes:(Ljava/util/Set;)Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
            checkcast com.oracle.truffle.api.nodes.Node
            astore 3 /* node */
        start local 3 // com.oracle.truffle.api.nodes.Node node
         1: .line 86
            aload 3 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 4 /* section */
        start local 4 // com.oracle.truffle.api.source.SourceSection section
         2: .line 87
            aload 4 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharIndex:()I
            istore 5 /* startIndex */
        start local 5 // int startIndex
         3: .line 88
            aload 4 /* section */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.getCharEndIndex:(Lcom/oracle/truffle/api/source/SourceSection;)I
            istore 6 /* endIndex */
        start local 6 // int endIndex
         4: .line 89
            iload 5 /* startIndex */
            iload 0 /* offset */
            if_icmpgt 12
            iload 0 /* offset */
            iload 6 /* endIndex */
            if_icmpgt 12
         5: .line 91
            goto 9
        start local 7 // com.oracle.truffle.api.nodes.Node ch
         6: .line 92
      StackMap locals: int com.oracle.truffle.api.nodes.Node java.util.Set com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection int int com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 3 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 3 /* node */
         7: .line 93
            aload 3 /* node */
            ifnonnull 9
         8: .line 94
            goto 11
        end local 7 // com.oracle.truffle.api.nodes.Node ch
         9: .line 91
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            iload 0 /* offset */
            aload 2 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findChildTaggedNode:(Lcom/oracle/truffle/api/nodes/Node;ILjava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
            dup
            astore 7 /* ch */
        start local 7 // com.oracle.truffle.api.nodes.Node ch
        10: ifnull 6
        11: .line 97
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 7 /* ch */
            areturn
        end local 7 // com.oracle.truffle.api.nodes.Node ch
        12: .line 98
      StackMap locals:
      StackMap stack:
            iload 6 /* endIndex */
            iload 0 /* offset */
            if_icmpge 14
        13: .line 99
            aload 3 /* node */
            aload 2 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findLastNode:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
            areturn
        14: .line 101
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            aload 2 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findFirstNode:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
            areturn
        end local 6 // int endIndex
        end local 5 // int startIndex
        end local 4 // com.oracle.truffle.api.source.SourceSection section
        end local 3 // com.oracle.truffle.api.nodes.Node node
        end local 2 // java.util.Set tags
        end local 1 // com.oracle.truffle.api.nodes.Node contextNode
        end local 0 // int offset
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0       offset  I
            0   15     1  contextNode  Lcom/oracle/truffle/api/nodes/Node;
            0   15     2         tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            1   15     3         node  Lcom/oracle/truffle/api/nodes/Node;
            2   15     4      section  Lcom/oracle/truffle/api/source/SourceSection;
            3   15     5   startIndex  I
            4   15     6     endIndex  I
            6    9     7           ch  Lcom/oracle/truffle/api/nodes/Node;
           10   12     7           ch  Lcom/oracle/truffle/api/nodes/Node;
    Signature: (ILcom/oracle/truffle/api/nodes/Node;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/api/nodes/Node;
    MethodParameters:
             Name  Flags
      offset       
      contextNode  
      tags         

  private static void forEachInstrumentableChild(com.oracle.truffle.api.nodes.Node, com.oracle.truffle.api.nodes.NodeVisitor, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;Ljava/util/Set;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.nodes.Node parent
        start local 1 // com.oracle.truffle.api.nodes.NodeVisitor visitor
        start local 2 // java.util.Set tags
         0: .line 106
            aload 0 /* parent */
            new com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$1
            dup
            aload 2 /* tags */
            aload 1 /* visitor */
            invokespecial com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$1.<init>:(Ljava/util/Set;Lcom/oracle/truffle/api/nodes/NodeVisitor;)V
            invokestatic com.oracle.truffle.api.nodes.NodeUtil.forEachChild:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;)Z
            pop
         1: .line 126
            return
        end local 2 // java.util.Set tags
        end local 1 // com.oracle.truffle.api.nodes.NodeVisitor visitor
        end local 0 // com.oracle.truffle.api.nodes.Node parent
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0   parent  Lcom/oracle/truffle/api/nodes/Node;
            0    2     1  visitor  Lcom/oracle/truffle/api/nodes/NodeVisitor;
            0    2     2     tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)V
    MethodParameters:
         Name  Flags
      parent   
      visitor  
      tags     

  private static com.oracle.truffle.api.nodes.Node findChildTaggedNode(com.oracle.truffle.api.nodes.Node, int, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;ILjava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=3
        start local 0 // com.oracle.truffle.api.nodes.Node node
        start local 1 // int offset
        start local 2 // java.util.Set tags
         0: .line 134
            new com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes
            dup
            invokespecial com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes.<init>:()V
            astore 3 /* lowerNodes */
        start local 3 // com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes lowerNodes
         1: .line 136
            new com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes
            dup
            invokespecial com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes.<init>:()V
            astore 4 /* higherNodes */
        start local 4 // com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes higherNodes
         2: .line 137
            iconst_1
            anewarray com.oracle.truffle.api.nodes.Node
            astore 5 /* foundNode */
        start local 5 // com.oracle.truffle.api.nodes.Node[] foundNode
         3: .line 138
            aload 0 /* node */
            new com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$2
            dup
            aload 2 /* tags */
            iload 1 /* offset */
            aload 5 /* foundNode */
            aload 4 /* higherNodes */
            aload 3 /* lowerNodes */
            invokespecial com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$2.<init>:(Ljava/util/Set;I[Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/instrumentation/DefaultNearestNodeSearch$SortedNodes;Lcom/oracle/truffle/api/instrumentation/DefaultNearestNodeSearch$SortedNodes;)V
         4: .line 196
            aload 2 /* tags */
         5: .line 138
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.forEachInstrumentableChild:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;Ljava/util/Set;)V
         6: .line 197
            aload 5 /* foundNode */
            iconst_0
            aaload
            ifnull 8
         7: .line 198
            aload 5 /* foundNode */
            iconst_0
            aaload
            areturn
         8: .line 200
      StackMap locals: com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes com.oracle.truffle.api.nodes.Node[]
      StackMap stack:
            aload 4 /* higherNodes */
            getfield com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes.nodes:[Lcom/oracle/truffle/api/nodes/Node;
            aload 4 /* higherNodes */
            getfield com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes.size:I
            iload 1 /* offset */
            aload 2 /* tags */
            iconst_0
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findChildTaggedNode:([Lcom/oracle/truffle/api/nodes/Node;IILjava/util/Set;Z)Lcom/oracle/truffle/api/nodes/Node;
            astore 6 /* taggedNode */
        start local 6 // com.oracle.truffle.api.nodes.Node taggedNode
         9: .line 201
            aload 6 /* taggedNode */
            ifnonnull 11
        10: .line 202
            aload 3 /* lowerNodes */
            getfield com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes.nodes:[Lcom/oracle/truffle/api/nodes/Node;
            aload 3 /* lowerNodes */
            getfield com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes.size:I
            iload 1 /* offset */
            aload 2 /* tags */
            iconst_1
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findChildTaggedNode:([Lcom/oracle/truffle/api/nodes/Node;IILjava/util/Set;Z)Lcom/oracle/truffle/api/nodes/Node;
            astore 6 /* taggedNode */
        11: .line 204
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 6 /* taggedNode */
            areturn
        end local 6 // com.oracle.truffle.api.nodes.Node taggedNode
        end local 5 // com.oracle.truffle.api.nodes.Node[] foundNode
        end local 4 // com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes higherNodes
        end local 3 // com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes lowerNodes
        end local 2 // java.util.Set tags
        end local 1 // int offset
        end local 0 // com.oracle.truffle.api.nodes.Node node
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         node  Lcom/oracle/truffle/api/nodes/Node;
            0   12     1       offset  I
            0   12     2         tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            1   12     3   lowerNodes  Lcom/oracle/truffle/api/instrumentation/DefaultNearestNodeSearch$SortedNodes;
            2   12     4  higherNodes  Lcom/oracle/truffle/api/instrumentation/DefaultNearestNodeSearch$SortedNodes;
            3   12     5    foundNode  [Lcom/oracle/truffle/api/nodes/Node;
            9   12     6   taggedNode  Lcom/oracle/truffle/api/nodes/Node;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;ILjava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/api/nodes/Node;
    MethodParameters:
        Name  Flags
      node    
      offset  
      tags    

  private static com.oracle.truffle.api.nodes.Node findChildTaggedNode(com.oracle.truffle.api.nodes.Node[], int, int, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>, boolean);
    descriptor: ([Lcom/oracle/truffle/api/nodes/Node;IILjava/util/Set;Z)Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=5
        start local 0 // com.oracle.truffle.api.nodes.Node[] nodes
        start local 1 // int size
        start local 2 // int offset
        start local 3 // java.util.Set tags
        start local 4 // boolean reverse
         0: .line 208
            aload 0 /* nodes */
            ifnonnull 2
         1: .line 209
            aconst_null
            areturn
         2: .line 211
      StackMap locals:
      StackMap stack:
            iload 4 /* reverse */
            ifeq 3
            iload 1 /* size */
            iconst_1
            isub
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 5 /* i */
        start local 5 // int i
         5: goto 15
         6: .line 212
      StackMap locals: int
      StackMap stack:
            aload 0 /* nodes */
            iload 5 /* i */
            aaload
            astore 6 /* node */
        start local 6 // com.oracle.truffle.api.nodes.Node node
         7: .line 213
            aload 6 /* node */
            aload 3 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.isTaggedWith:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Z
            ifeq 9
         8: .line 214
            aload 6 /* node */
            areturn
         9: .line 216
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 6 /* node */
            iload 2 /* offset */
            aload 3 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findChildTaggedNode:(Lcom/oracle/truffle/api/nodes/Node;ILjava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
            astore 7 /* taggedNode */
        start local 7 // com.oracle.truffle.api.nodes.Node taggedNode
        10: .line 217
            aload 7 /* taggedNode */
            ifnull 12
        11: .line 218
            aload 7 /* taggedNode */
            areturn
        end local 7 // com.oracle.truffle.api.nodes.Node taggedNode
        end local 6 // com.oracle.truffle.api.nodes.Node node
        12: .line 211
      StackMap locals:
      StackMap stack:
            iload 4 /* reverse */
            ifeq 13
            iload 5 /* i */
            iconst_1
            isub
            goto 14
      StackMap locals:
      StackMap stack:
        13: iload 5 /* i */
            iconst_1
            iadd
      StackMap locals:
      StackMap stack: int
        14: istore 5 /* i */
      StackMap locals:
      StackMap stack:
        15: iload 4 /* reverse */
            ifeq 16
            iload 5 /* i */
            ifge 6
            goto 17
      StackMap locals:
      StackMap stack:
        16: iload 5 /* i */
            iload 1 /* size */
            if_icmplt 6
        end local 5 // int i
        17: .line 221
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // boolean reverse
        end local 3 // java.util.Set tags
        end local 2 // int offset
        end local 1 // int size
        end local 0 // com.oracle.truffle.api.nodes.Node[] nodes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0       nodes  [Lcom/oracle/truffle/api/nodes/Node;
            0   18     1        size  I
            0   18     2      offset  I
            0   18     3        tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            0   18     4     reverse  Z
            5   17     5           i  I
            7   12     6        node  Lcom/oracle/truffle/api/nodes/Node;
           10   12     7  taggedNode  Lcom/oracle/truffle/api/nodes/Node;
    Signature: ([Lcom/oracle/truffle/api/nodes/Node;IILjava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;Z)Lcom/oracle/truffle/api/nodes/Node;
    MethodParameters:
         Name  Flags
      nodes    
      size     
      offset   
      tags     
      reverse  

  private static int getCharEndIndex(com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/source/SourceSection;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.source.SourceSection ss
         0: .line 226
            aload 0 /* ss */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharLength:()I
            ifle 2
         1: .line 227
            aload 0 /* ss */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharEndIndex:()I
            iconst_1
            isub
            ireturn
         2: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* ss */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharIndex:()I
            ireturn
        end local 0 // com.oracle.truffle.api.source.SourceSection ss
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    ss  Lcom/oracle/truffle/api/source/SourceSection;
    MethodParameters:
      Name  Flags
      ss    

  private static com.oracle.truffle.api.nodes.Node findFirstNode(com.oracle.truffle.api.nodes.Node, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.nodes.Node contextNode
        start local 1 // java.util.Set tags
         0: .line 234
            iconst_1
            anewarray com.oracle.truffle.api.nodes.Node
            astore 2 /* first */
        start local 2 // com.oracle.truffle.api.nodes.Node[] first
         1: .line 235
            aload 0 /* contextNode */
            new com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$3
            dup
            aload 1 /* tags */
            aload 2 /* first */
            invokespecial com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$3.<init>:(Ljava/util/Set;[Lcom/oracle/truffle/api/nodes/Node;)V
            invokevirtual com.oracle.truffle.api.nodes.Node.accept:(Lcom/oracle/truffle/api/nodes/NodeVisitor;)V
         2: .line 245
            aload 2 /* first */
            iconst_0
            aaload
            areturn
        end local 2 // com.oracle.truffle.api.nodes.Node[] first
        end local 1 // java.util.Set tags
        end local 0 // com.oracle.truffle.api.nodes.Node contextNode
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  contextNode  Lcom/oracle/truffle/api/nodes/Node;
            0    3     1         tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            1    3     2        first  [Lcom/oracle/truffle/api/nodes/Node;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/api/nodes/Node;
    MethodParameters:
             Name  Flags
      contextNode  
      tags         

  private static com.oracle.truffle.api.nodes.Node findLastNode(com.oracle.truffle.api.nodes.Node, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.oracle.truffle.api.nodes.Node contextNode
        start local 1 // java.util.Set tags
         0: .line 249
            aload 0 /* contextNode */
            aload 1 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.isTaggedWith:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Z
            ifeq 2
         1: .line 250
            aload 0 /* contextNode */
            areturn
         2: .line 252
      StackMap locals:
      StackMap stack:
            aload 0 /* contextNode */
            invokestatic com.oracle.truffle.api.nodes.NodeUtil.findNodeChildren:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/util/List;
            astore 2 /* children */
        start local 2 // java.util.List children
         3: .line 253
            aload 2 /* children */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            istore 3 /* i */
        start local 3 // int i
         4: goto 12
         5: .line 254
      StackMap locals: java.util.List int
      StackMap stack:
            aload 2 /* children */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.Node
            astore 4 /* ch */
        start local 4 // com.oracle.truffle.api.nodes.Node ch
         6: .line 255
            aload 4 /* ch */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode
            ifeq 8
         7: .line 256
            aload 4 /* ch */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode.getDelegateNode:()Lcom/oracle/truffle/api/nodes/Node;
            astore 4 /* ch */
         8: .line 258
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 4 /* ch */
            aload 1 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.findLastNode:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Lcom/oracle/truffle/api/nodes/Node;
            astore 5 /* last */
        start local 5 // com.oracle.truffle.api.nodes.Node last
         9: .line 259
            aload 5 /* last */
            ifnull 11
        10: .line 260
            aload 5 /* last */
            areturn
        end local 5 // com.oracle.truffle.api.nodes.Node last
        end local 4 // com.oracle.truffle.api.nodes.Node ch
        11: .line 253
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
        12: iload 3 /* i */
            ifge 5
        end local 3 // int i
        13: .line 263
            aconst_null
            areturn
        end local 2 // java.util.List children
        end local 1 // java.util.Set tags
        end local 0 // com.oracle.truffle.api.nodes.Node contextNode
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0  contextNode  Lcom/oracle/truffle/api/nodes/Node;
            0   14     1         tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            3   14     2     children  Ljava/util/List<Lcom/oracle/truffle/api/nodes/Node;>;
            4   13     3            i  I
            6   11     4           ch  Lcom/oracle/truffle/api/nodes/Node;
            9   11     5         last  Lcom/oracle/truffle/api/nodes/Node;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/api/nodes/Node;
    MethodParameters:
             Name  Flags
      contextNode  
      tags         

  private static boolean isTaggedWith(com.oracle.truffle.api.nodes.Node, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.nodes.Node node
        start local 1 // java.util.Set tags
         0: .line 267
            aload 0 /* node */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode
            ifeq 3
            aload 0 /* node */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.isInstrumentable:()Z
            ifeq 3
         1: .line 268
            aload 0 /* node */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode
            aload 1 /* tags */
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.materializeInstrumentableNodes:(Ljava/util/Set;)Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
            astore 2 /* inode */
        start local 2 // com.oracle.truffle.api.instrumentation.InstrumentableNode inode
         2: .line 269
            aload 2 /* inode */
            aload 1 /* tags */
            invokestatic com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch.isTaggedWith:(Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;Ljava/util/Set;)Z
            ireturn
        end local 2 // com.oracle.truffle.api.instrumentation.InstrumentableNode inode
         3: .line 271
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.util.Set tags
        end local 0 // com.oracle.truffle.api.nodes.Node node
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   node  Lcom/oracle/truffle/api/nodes/Node;
            0    4     1   tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            2    3     2  inode  Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Z
    MethodParameters:
      Name  Flags
      node  
      tags  

  private static boolean isTaggedWith(com.oracle.truffle.api.instrumentation.InstrumentableNode, java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;Ljava/util/Set;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.InstrumentableNode inode
        start local 1 // java.util.Set tags
         0: .line 275
            aload 1 /* tags */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: com.oracle.truffle.api.instrumentation.InstrumentableNode java.util.Set top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 2 /* tag */
        start local 2 // java.lang.Class tag
         2: .line 276
            aload 0 /* inode */
            aload 2 /* tag */
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 4
         3: .line 277
            iconst_1
            ireturn
        end local 2 // java.lang.Class tag
         4: .line 275
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 280
            iconst_0
            ireturn
        end local 1 // java.util.Set tags
        end local 0 // com.oracle.truffle.api.instrumentation.InstrumentableNode inode
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0  inode  Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
            0    6     1   tags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            2    4     2    tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
    Signature: (Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Z
    MethodParameters:
       Name  Flags
      inode  
      tags   
}
SourceFile: "DefaultNearestNodeSearch.java"
NestMembers:
  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$1  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$2  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$3  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes
InnerClasses:
  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$1
  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$2
  com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$3
  private final SortedNodes = com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch$SortedNodes of com.oracle.truffle.api.instrumentation.DefaultNearestNodeSearch
  public abstract WrapperNode = com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode of com.oracle.truffle.api.instrumentation.InstrumentableNode