public final class com.oracle.truffle.api.instrumentation.ProbeNode extends com.oracle.truffle.api.nodes.Node
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.ProbeNode
  super_class: com.oracle.truffle.api.nodes.Node
{
  private static final int SEEN_UNWIND;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int SEEN_UNWIND_NEXT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int SEEN_RETURN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int SEEN_REENTER;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  public static final java.lang.Object UNWIND_ACTION_REENTER;
    descriptor: Ljava/lang/Object;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final java.lang.Object UNWIND_ACTION_IGNORED;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.oracle.truffle.api.instrumentation.InstrumentationHandler handler;
    descriptor: Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference retiredNodeReference;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.oracle.truffle.api.instrumentation.EventContext context;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventContext;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  private volatile com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chain;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private volatile com.oracle.truffle.api.Assumption version;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  private volatile int seen;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 114
            ldc Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
         3: .line 128
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
         4: .line 131
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_IGNORED:Ljava/lang/Object;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.oracle.truffle.api.instrumentation.InstrumentationHandler, com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;Lcom/oracle/truffle/api/source/SourceSection;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        start local 2 // com.oracle.truffle.api.source.SourceSection sourceSection
         0: .line 163
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.nodes.Node.<init>:()V
         1: .line 160
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.seen:I
         2: .line 164
            aload 0 /* this */
            aload 1 /* handler */
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.handler:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
         3: .line 165
            aload 0 /* this */
            new com.oracle.truffle.api.instrumentation.EventContext
            dup
            aload 0 /* this */
            aload 2 /* sourceSection */
            invokespecial com.oracle.truffle.api.instrumentation.EventContext.<init>:(Lcom/oracle/truffle/api/instrumentation/ProbeNode;Lcom/oracle/truffle/api/source/SourceSection;)V
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
         4: .line 166
            return
        end local 2 // com.oracle.truffle.api.source.SourceSection sourceSection
        end local 1 // com.oracle.truffle.api.instrumentation.InstrumentationHandler handler
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    5     1        handler  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            0    5     2  sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
    MethodParameters:
               Name  Flags
      handler        
      sourceSection  

  com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference getRetiredNodeReference();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 169
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;

  void clearRetiredNodeReference();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 173
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
         1: .line 174
            return
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;

  private boolean hasNewTags(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: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.nodes.Node retiredNode
        start local 2 // java.util.Set materializeTags
         0: .line 177
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            ifnonnull 1
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.materializeTags:Ljava/util/Set;
            goto 2
      StackMap locals:
      StackMap stack:
         1: new java.util.HashSet
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.materializeTags:Ljava/util/Set;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
      StackMap locals:
      StackMap stack: java.util.Set
         2: astore 3 /* allSeenMaterializeTags */
        start local 3 // java.util.Set allSeenMaterializeTags
         3: .line 179
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            astore 4 /* nodeRef */
        start local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference nodeRef
         4: .line 180
            goto 11
         5: .line 181
      StackMap locals: java.util.Set com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference
      StackMap stack:
            aload 3 /* allSeenMaterializeTags */
            aload 4 /* nodeRef */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.materializeTags:Ljava/util/Set;
            if_acmpeq 7
         6: .line 182
            aload 3 /* allSeenMaterializeTags */
            aload 4 /* nodeRef */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.materializeTags:Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
         7: .line 184
      StackMap locals:
      StackMap stack:
            aload 4 /* nodeRef */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.getNode:()Lcom/oracle/truffle/api/nodes/Node;
            astore 5 /* nodeRefNode */
        start local 5 // com.oracle.truffle.api.nodes.Node nodeRefNode
         8: .line 185
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 9
            aload 5 /* nodeRefNode */
            ifnull 9
            aload 5 /* nodeRefNode */
            aload 1 /* retiredNode */
            if_acmpne 9
            new java.lang.AssertionError
            dup
            ldc "The same retired node must not be set more than once!"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         9: .line 186
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 10
            aload 4 /* nodeRef */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.materializeTags:Ljava/util/Set;
            aload 2 /* materializeTags */
            invokeinterface java.util.Set.equals:(Ljava/lang/Object;)Z
            ifeq 10
            new java.lang.AssertionError
            dup
            ldc "Retired node must be set at most once for the same set of tags!"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        10: .line 187
      StackMap locals:
      StackMap stack:
            aload 4 /* nodeRef */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            astore 4 /* nodeRef */
        end local 5 // com.oracle.truffle.api.nodes.Node nodeRefNode
        11: .line 180
      StackMap locals:
      StackMap stack:
            aload 4 /* nodeRef */
            ifnonnull 5
        12: .line 189
            aload 3 /* allSeenMaterializeTags */
            aload 2 /* materializeTags */
            invokeinterface java.util.Set.containsAll:(Ljava/util/Collection;)Z
            ifeq 13
            iconst_0
            goto 14
      StackMap locals:
      StackMap stack:
        13: iconst_1
      StackMap locals:
      StackMap stack: int
        14: ireturn
        end local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference nodeRef
        end local 3 // java.util.Set allSeenMaterializeTags
        end local 2 // java.util.Set materializeTags
        end local 1 // com.oracle.truffle.api.nodes.Node retiredNode
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   15     0                    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   15     1             retiredNode  Lcom/oracle/truffle/api/nodes/Node;
            0   15     2         materializeTags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            3   15     3  allSeenMaterializeTags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            4   15     4                 nodeRef  Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            8   11     5             nodeRefNode  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;>;>;)Z
    MethodParameters:
                 Name  Flags
      retiredNode      
      materializeTags  

  void setRetiredNode(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;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.nodes.Node retiredNode
        start local 2 // java.util.Set materializeTags
         0: .line 193
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            ifnonnull 3
         1: .line 194
            aload 0 /* this */
            new com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference
            dup
            aload 1 /* retiredNode */
            aload 2 /* materializeTags */
            aconst_null
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.<init>:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;)V
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
         2: .line 195
            goto 7
         3: .line 200
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 4
            aload 0 /* this */
            aload 1 /* retiredNode */
            aload 2 /* materializeTags */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.hasNewTags:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;)Z
            ifne 4
            new java.lang.AssertionError
            dup
            ldc "There should always be some new materialize tag!"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         4: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            astore 3 /* previousRetiredNodeReference */
        start local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference previousRetiredNodeReference
         5: .line 202
            new com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference
            dup
            aload 1 /* retiredNode */
            aload 2 /* materializeTags */
            aload 3 /* previousRetiredNodeReference */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference.<init>:(Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set;Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;)V
            astore 4 /* newRetiredNodeReference */
        start local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference newRetiredNodeReference
         6: .line 203
            aload 0 /* this */
            aload 4 /* newRetiredNodeReference */
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
        end local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference newRetiredNodeReference
        end local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference previousRetiredNodeReference
         7: .line 205
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.Set materializeTags
        end local 1 // com.oracle.truffle.api.nodes.Node retiredNode
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0    8     0                          this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    8     1                   retiredNode  Lcom/oracle/truffle/api/nodes/Node;
            0    8     2               materializeTags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            5    7     3  previousRetiredNodeReference  Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            6    7     4       newRetiredNodeReference  Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
    Signature: (Lcom/oracle/truffle/api/nodes/Node;Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)V
    MethodParameters:
                 Name  Flags
      retiredNode      
      materializeTags  

  public void onEnter(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 214
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.lazyUpdate:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 2 /* localChain */
        start local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
         1: .line 215
            aload 2 /* localChain */
            ifnull 3
         2: .line 216
            aload 2 /* localChain */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onEnter:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
         3: .line 218
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    4     1       frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1    4     2  localChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
       Name  Flags
      frame  

  public void onReturnValue(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Object result
         0: .line 229
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.lazyUpdate:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 3 /* localChain */
        start local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
         1: .line 230
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            aload 2 /* result */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.isNullOrInteropValue:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 231
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            aload 3 /* localChain */
            ifnull 4
         3: .line 232
            aload 3 /* localChain */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aload 2 /* result */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onReturnValue:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
         4: .line 234
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
        end local 2 // java.lang.Object result
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    5     1       frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    5     2      result  Ljava/lang/Object;
            1    5     3  localChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
        Name  Flags
      frame   
      result  

  private boolean isNullOrInteropValue(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // java.lang.Object result
         0: .line 237
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode
            ifne 2
         1: .line 239
            iconst_1
            ireturn
         2: .line 241
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            ifnonnull 4
         3: .line 242
            iconst_1
            ireturn
         4: .line 244
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.interopAccess:()Lcom/oracle/truffle/api/impl/Accessor$InteropSupport;
            aload 1 /* result */
            invokevirtual com.oracle.truffle.api.impl.Accessor$InteropSupport.checkInteropType:(Ljava/lang/Object;)V
         5: .line 245
            iconst_1
            ireturn
        end local 1 // java.lang.Object result
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    6     1  result  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      result  

  public com.oracle.truffle.api.nodes.Node copy();
    descriptor: ()Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 256
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.nodes.Node.copy:()Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.instrumentation.ProbeNode
            astore 1 /* pn */
        start local 1 // com.oracle.truffle.api.instrumentation.ProbeNode pn
         1: .line 257
            aload 1 /* pn */
            new com.oracle.truffle.api.instrumentation.EventContext
            dup
            aload 1 /* pn */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokespecial com.oracle.truffle.api.instrumentation.EventContext.<init>:(Lcom/oracle/truffle/api/instrumentation/ProbeNode;Lcom/oracle/truffle/api/source/SourceSection;)V
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
         2: .line 258
            aload 1 /* pn */
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.ProbeNode pn
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            1    3     1    pn  Lcom/oracle/truffle/api/instrumentation/ProbeNode;

  public java.lang.Object onReturnExceptionalOrUnwind(com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable, boolean);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;Z)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // java.lang.Throwable exception
        start local 3 // boolean isReturnCalled
         0: .line 278
            aconst_null
            astore 4 /* unwind */
        start local 4 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         1: .line 279
            aload 2 /* exception */
            instanceof com.oracle.truffle.api.instrumentation.UnwindException
            ifeq 5
         2: .line 280
            aload 0 /* this */
            iconst_1
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.profileBranch:(I)V
         3: .line 281
            aload 2 /* exception */
            checkcast com.oracle.truffle.api.instrumentation.UnwindException
            astore 4 /* unwind */
         4: .line 282
            goto 7
      StackMap locals: com.oracle.truffle.api.instrumentation.UnwindException
      StackMap stack:
         5: aload 2 /* exception */
            instanceof java.lang.ThreadDeath
            ifeq 7
         6: .line 283
            aload 2 /* exception */
            checkcast java.lang.ThreadDeath
            athrow
         7: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.lazyUpdate:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 5 /* localChain */
        start local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
         8: .line 286
            aload 5 /* localChain */
            ifnull 29
         9: .line 287
            iload 3 /* isReturnCalled */
            ifne 19
        10: .line 289
            aload 5 /* localChain */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aload 2 /* exception */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onReturnExceptional:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;)V
        11: .line 290
            goto 19
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame java.lang.Throwable int com.oracle.truffle.api.instrumentation.UnwindException com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack: com.oracle.truffle.api.instrumentation.UnwindException
        12: astore 6 /* ex */
        start local 6 // com.oracle.truffle.api.instrumentation.UnwindException ex
        13: .line 291
            aload 0 /* this */
            iconst_1
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.profileBranch:(I)V
        14: .line 292
            aload 4 /* unwind */
            ifnull 18
            aload 4 /* unwind */
            aload 6 /* ex */
            if_acmpeq 18
        15: .line 293
            aload 0 /* this */
            iconst_2
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.profileBranch:(I)V
        16: .line 294
            aload 4 /* unwind */
            aload 6 /* ex */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.addNext:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)V
        17: .line 295
            goto 19
        18: .line 296
      StackMap locals: com.oracle.truffle.api.instrumentation.UnwindException
      StackMap stack:
            aload 6 /* ex */
            astore 4 /* unwind */
        end local 6 // com.oracle.truffle.api.instrumentation.UnwindException ex
        19: .line 300
      StackMap locals:
      StackMap stack:
            aload 4 /* unwind */
            ifnull 29
        20: .line 301
            aload 5 /* localChain */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aload 4 /* unwind */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onUnwind:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Ljava/lang/Object;
            astore 6 /* ret */
        start local 6 // java.lang.Object ret
        21: .line 302
            aload 6 /* ret */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
            if_acmpne 24
        22: .line 303
            aload 0 /* this */
            bipush 8
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.profileBranch:(I)V
        23: .line 304
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
            areturn
        24: .line 305
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 6 /* ret */
            ifnull 28
            aload 6 /* ret */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_IGNORED:Ljava/lang/Object;
            if_acmpeq 28
        25: .line 306
            aload 0 /* this */
            iconst_4
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.profileBranch:(I)V
        26: .line 307
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 27
            aload 0 /* this */
            aload 6 /* ret */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.isNullOrInteropValue:(Ljava/lang/Object;)Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        27: .line 308
      StackMap locals:
      StackMap stack:
            aload 6 /* ret */
            areturn
        28: .line 310
      StackMap locals:
      StackMap stack:
            aload 4 /* unwind */
            athrow
        end local 6 // java.lang.Object ret
        29: .line 313
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
        end local 4 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 3 // boolean isReturnCalled
        end local 2 // java.lang.Throwable exception
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   30     0            this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   30     1           frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   30     2       exception  Ljava/lang/Throwable;
            0   30     3  isReturnCalled  Z
            1   30     4          unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            8   30     5      localChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           13   19     6              ex  Lcom/oracle/truffle/api/instrumentation/UnwindException;
           21   29     6             ret  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          10    11      12  Class com.oracle.truffle.api.instrumentation.UnwindException
    MethodParameters:
                Name  Flags
      frame           
      exception       
      isReturnCalled  

  private void profileBranch(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // int flag
         0: .line 317
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.seen:I
            iload 1 /* flag */
            iand
            ifne 3
         1: .line 318
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 319
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.seen:I
            iload 1 /* flag */
            ior
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.seen:I
         3: .line 321
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int flag
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    4     1  flag  I
    MethodParameters:
      Name  Flags
      flag  

  void onInputValue(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventBinding<?>, com.oracle.truffle.api.instrumentation.EventContext, int, );
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding;Lcom/oracle/truffle/api/instrumentation/EventContext;ILjava/lang/Object;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=7, args_size=6
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding targetBinding
        start local 3 // com.oracle.truffle.api.instrumentation.EventContext inputContext
        start local 4 // int inputIndex
        start local 5 // java.lang.Object inputValue
         0: .line 324
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.lazyUpdate:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 6 /* localChain */
        start local 6 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
         1: .line 325
            aload 6 /* localChain */
            ifnull 3
         2: .line 326
            aload 6 /* localChain */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            aload 2 /* targetBinding */
            aload 3 /* inputContext */
            iload 4 /* inputIndex */
            aload 5 /* inputValue */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onInputValue:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding;Lcom/oracle/truffle/api/instrumentation/EventContext;ILjava/lang/Object;)V
         3: .line 328
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            return
        end local 6 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode localChain
        end local 5 // java.lang.Object inputValue
        end local 4 // int inputIndex
        end local 3 // com.oracle.truffle.api.instrumentation.EventContext inputContext
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding targetBinding
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    4     1          frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0    4     2  targetBinding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            0    4     3   inputContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    4     4     inputIndex  I
            0    4     5     inputValue  Ljava/lang/Object;
            1    4     6     localChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    Signature: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;Lcom/oracle/truffle/api/instrumentation/EventContext;ILjava/lang/Object;)V
    MethodParameters:
               Name  Flags
      frame          
      targetBinding  
      inputContext   
      inputIndex     
      inputValue     

  com.oracle.truffle.api.instrumentation.EventContext getContext();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/EventContext;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 331
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;

  com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode findWrapper();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/InstrumentableNode$WrapperNode;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 335
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 1 /* parent */
        start local 1 // com.oracle.truffle.api.nodes.Node parent
         1: .line 336
            aload 1 /* parent */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode
            ifne 6
         2: .line 337
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         3: .line 338
            aload 1 /* parent */
            ifnonnull 5
         4: .line 339
            new java.lang.AssertionError
            dup
            ldc "Probe node disconnected from AST."
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         5: .line 341
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            new java.lang.AssertionError
            dup
            ldc "ProbeNodes must have a parent Node that implements NodeWrapper."
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         6: .line 344
      StackMap locals:
      StackMap stack:
            aload 1 /* parent */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode
            areturn
        end local 1 // com.oracle.truffle.api.nodes.Node parent
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            1    7     1  parent  Lcom/oracle/truffle/api/nodes/Node;
    Exceptions:
      throws java.lang.AssertionError

  synchronized void invalidate();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 348
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.version:Lcom/oracle/truffle/api/Assumption;
            astore 1 /* localVersion */
        start local 1 // com.oracle.truffle.api.Assumption localVersion
         1: .line 349
            aload 1 /* localVersion */
            ifnull 3
         2: .line 350
            aload 1 /* localVersion */
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
         3: .line 352
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.Assumption localVersion
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            1    4     1  localVersion  Lcom/oracle/truffle/api/Assumption;

  com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode lazyUpdate(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 355
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.version:Lcom/oracle/truffle/api/Assumption;
            astore 2 /* localVersion */
        start local 2 // com.oracle.truffle.api.Assumption localVersion
         1: .line 356
            aload 2 /* localVersion */
            ifnull 2
            aload 2 /* localVersion */
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifne 4
         2: .line 357
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         3: .line 359
            aload 0 /* this */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.lazyUpdatedImpl:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            areturn
         4: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            areturn
        end local 2 // com.oracle.truffle.api.Assumption localVersion
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    5     1         frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1    5     2  localVersion  Lcom/oracle/truffle/api/Assumption;
    MethodParameters:
       Name  Flags
      frame  

  private com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode lazyUpdatedImpl(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 367
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.getLock:()Ljava/util/concurrent/locks/Lock;
            astore 4 /* lock */
        start local 4 // java.util.concurrent.locks.Lock lock
         1: .line 368
            aload 4 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
         2: .line 370
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.version:Lcom/oracle/truffle/api/Assumption;
            astore 5 /* localVersion */
        start local 5 // com.oracle.truffle.api.Assumption localVersion
         3: .line 371
            aload 5 /* localVersion */
            ifnull 7
            aload 5 /* localVersion */
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifeq 7
         4: .line 372
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 8
         5: .line 397
            aload 4 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
         6: .line 372
            aload 8
            areturn
         7: .line 376
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame top top java.util.concurrent.locks.Lock com.oracle.truffle.api.Assumption
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.handler:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.getExecutionBindingsSnapshot:()[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            astore 6 /* executionBindingsSnapshot */
        start local 6 // com.oracle.truffle.api.instrumentation.EventBinding$Source[] executionBindingsSnapshot
         8: .line 377
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.handler:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            aload 1 /* frame */
            aload 0 /* this */
            aload 6 /* executionBindingsSnapshot */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.createBindings:(Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/ProbeNode;[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 3 /* nextChain */
        start local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode nextChain
         9: .line 378
            aload 3 /* nextChain */
            ifnonnull 17
        10: .line 381
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.retiredNodeReference:Lcom/oracle/truffle/api/instrumentation/ProbeNode$RetiredNodeReference;
            ifnonnull 14
        11: .line 382
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentationHandler.removeWrapper:(Lcom/oracle/truffle/api/instrumentation/ProbeNode;)V
        12: .line 397
            aload 4 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        13: .line 383
            aconst_null
            areturn
        14: .line 385
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame top com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.util.concurrent.locks.Lock com.oracle.truffle.api.Assumption com.oracle.truffle.api.instrumentation.EventBinding$Source[]
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 2 /* oldChain */
        start local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode oldChain
        15: .line 386
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
        16: .line 388
            goto 19
        end local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode oldChain
        17: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 2 /* oldChain */
        start local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode oldChain
        18: .line 390
            aload 0 /* this */
            aload 0 /* this */
            aload 3 /* nextChain */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
        19: .line 392
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.util.concurrent.locks.Lock com.oracle.truffle.api.Assumption com.oracle.truffle.api.instrumentation.EventBinding$Source[]
      StackMap stack:
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            ldc "Instruments unchanged"
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
            putfield com.oracle.truffle.api.instrumentation.ProbeNode.version:Lcom/oracle/truffle/api/Assumption;
        20: .line 393
            aload 6 /* executionBindingsSnapshot */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.handler:Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler;
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler.getExecutionBindingsSnapshot:()[Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            if_acmpne 7
        21: .line 395
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 25
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.validEventContextOnLazyUpdate:()Z
            ifne 25
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 6 // com.oracle.truffle.api.instrumentation.EventBinding$Source[] executionBindingsSnapshot
        end local 5 // com.oracle.truffle.api.Assumption localVersion
        end local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode nextChain
        end local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode oldChain
        22: .line 396
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame top top java.util.concurrent.locks.Lock
      StackMap stack: java.lang.Throwable
            astore 7
        23: .line 397
            aload 4 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        24: .line 398
            aload 7
            athrow
        start local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode oldChain
        start local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode nextChain
        25: .line 397
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.util.concurrent.locks.Lock
      StackMap stack:
            aload 4 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        26: .line 400
            aload 2 /* oldChain */
            ifnull 28
        27: .line 401
            aload 2 /* oldChain */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* frame */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.onDispose:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
        28: .line 404
      StackMap locals:
      StackMap stack:
            aload 3 /* nextChain */
            areturn
        end local 4 // java.util.concurrent.locks.Lock lock
        end local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode nextChain
        end local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode oldChain
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   29     0                       this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   29     1                      frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
           15   17     2                   oldChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           18   22     2                   oldChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           25   29     2                   oldChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            9   22     3                  nextChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           25   29     3                  nextChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            1   29     4                       lock  Ljava/util/concurrent/locks/Lock;
            3   22     5               localVersion  Lcom/oracle/truffle/api/Assumption;
            8   22     6  executionBindingsSnapshot  [Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
      Exception table:
        from    to  target  type
           2     5      22  any
           7    12      22  any
          14    22      22  any
    MethodParameters:
       Name  Flags
      frame  

  com.oracle.truffle.api.instrumentation.ExecutionEventNode lookupExecutionEventNode(com.oracle.truffle.api.instrumentation.EventBinding<?>);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.instrumentation.EventBinding binding
         0: .line 408
            aload 1 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.isDisposed:()Z
            ifeq 2
         1: .line 409
            aconst_null
            areturn
         2: .line 411
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.chain:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 2 /* chainNode */
        start local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chainNode
         3: .line 412
            goto 8
         4: .line 413
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            aload 2 /* chainNode */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            aload 1 /* binding */
            if_acmpne 7
         5: .line 414
            aload 2 /* chainNode */
            instanceof com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode
            ifeq 7
         6: .line 415
            aload 2 /* chainNode */
            checkcast com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode.eventNode:Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            areturn
         7: .line 418
      StackMap locals:
      StackMap stack:
            aload 2 /* chainNode */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 2 /* chainNode */
         8: .line 412
      StackMap locals:
      StackMap stack:
            aload 2 /* chainNode */
            ifnonnull 4
         9: .line 420
            aconst_null
            areturn
        end local 2 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chainNode
        end local 1 // com.oracle.truffle.api.instrumentation.EventBinding binding
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   10     1    binding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            3   10     2  chainNode  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    MethodParameters:
         Name  Flags
      binding  

  java.util.Iterator<com.oracle.truffle.api.instrumentation.ExecutionEventNode> lookupExecutionEventNodes(java.util.Collection<com.oracle.truffle.api.instrumentation.EventBinding<? extends com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory>>);
    descriptor: (Ljava/util/Collection;)Ljava/util/Iterator;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // java.util.Collection bindings
         0: .line 424
            new com.oracle.truffle.api.instrumentation.ProbeNode$1
            dup
            aload 0 /* this */
            aload 1 /* bindings */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$1.<init>:(Lcom/oracle/truffle/api/instrumentation/ProbeNode;Ljava/util/Collection;)V
            areturn
        end local 1 // java.util.Collection bindings
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0    1     1  bindings  Ljava/util/Collection<Lcom/oracle/truffle/api/instrumentation/EventBinding<+Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;>;
    Signature: (Ljava/util/Collection<Lcom/oracle/truffle/api/instrumentation/EventBinding<+Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;>;)Ljava/util/Iterator<Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;>;
    MethodParameters:
          Name  Flags
      bindings  

  com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode createParentEventChainCallback(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, com.oracle.truffle.api.nodes.RootNode, java.util.Set<java.lang.Class<?>>);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0000) 
    Code:
      stack=6, locals=10, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 3 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 4 // java.util.Set providedTags
         0: .line 457
            aload 0 /* this */
            aload 1 /* frame */
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.findParentChain:(Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 5 /* parent */
        start local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode parent
         1: .line 458
            aload 5 /* parent */
            instanceof com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode
            ifne 3
         2: .line 460
            aconst_null
            areturn
         3: .line 463
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            aload 5 /* parent */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.findProbe:()Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.getContext:()Lcom/oracle/truffle/api/instrumentation/EventContext;
            astore 6 /* parentContext */
        start local 6 // com.oracle.truffle.api.instrumentation.EventContext parentContext
         4: .line 464
            aload 5 /* parent */
            checkcast com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode
            astore 7 /* parentChain */
        start local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode parentChain
         5: .line 465
            aload 2 /* binding */
            aload 3 /* rootNode */
            aload 4 /* providedTags */
            aload 6 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            aload 6 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.indexOfChild:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;)I
            istore 8 /* index */
        start local 8 // int index
         6: .line 466
            iload 8 /* index */
            iflt 7
            iload 8 /* index */
            aload 7 /* parentChain */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.inputCount:I
            if_icmplt 9
         7: .line 469
      StackMap locals: com.oracle.truffle.api.instrumentation.EventContext com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode int
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 8
            aload 7 /* parentChain */
            aload 6 /* parentContext */
            aload 2 /* binding */
            aload 3 /* rootNode */
            aload 4 /* providedTags */
            iload 8 /* index */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.throwIllegalASTAssertion:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventProviderWithInputChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;I)Z
            ifne 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 470
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         9: .line 472
      StackMap locals:
      StackMap stack:
            aload 5 /* parent */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.findProbe:()Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            astore 9 /* probe */
        start local 9 // com.oracle.truffle.api.instrumentation.ProbeNode probe
        10: .line 473
            new com.oracle.truffle.api.instrumentation.ProbeNode$InputValueChainNode
            dup
            aload 2 /* binding */
            aload 9 /* probe */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            iload 8 /* index */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$InputValueChainNode.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/instrumentation/ProbeNode;Lcom/oracle/truffle/api/instrumentation/EventContext;I)V
            areturn
        end local 9 // com.oracle.truffle.api.instrumentation.ProbeNode probe
        end local 8 // int index
        end local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode parentChain
        end local 6 // com.oracle.truffle.api.instrumentation.EventContext parentContext
        end local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode parent
        end local 4 // java.util.Set providedTags
        end local 3 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   11     1          frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   11     2        binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0   11     3       rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0   11     4   providedTags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            1   11     5         parent  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            4   11     6  parentContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
            5   11     7    parentChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventProviderWithInputChainNode;
            6   11     8          index  I
           10   11     9          probe  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
    Signature: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set<Ljava/lang/Class<*>;>;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
              Name  Flags
      frame         
      binding       
      rootNode      
      providedTags  

  private static boolean throwIllegalASTAssertion(com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, com.oracle.truffle.api.nodes.RootNode, java.util.Set<java.lang.Class<?>>, );
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventProviderWithInputChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;I)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=15, args_size=6
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode parentChain
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext parentContext
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 3 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 4 // java.util.Set providedTags
        start local 5 // int index
         0: .line 479
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* msg */
        start local 6 // java.lang.StringBuilder msg
         1: .line 485
            aload 1 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 7 /* parentSourceSection */
        start local 7 // com.oracle.truffle.api.source.SourceSection parentSourceSection
         2: .line 486
            aload 2 /* binding */
            aload 3 /* rootNode */
            aload 4 /* providedTags */
            aload 1 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            aload 1 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
         3: .line 487
            aload 0 /* parentChain */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.inputCount:I
            iload 5 /* index */
            bipush 10
            iadd
            invokestatic java.lang.Math.max:(II)I
         4: .line 486
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.findChildContexts:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;I)[Lcom/oracle/truffle/api/instrumentation/EventContext;
            astore 8 /* contexts */
        start local 8 // com.oracle.truffle.api.instrumentation.EventContext[] contexts
         5: .line 489
            iconst_0
            istore 9 /* contextCount */
        start local 9 // int contextCount
         6: .line 490
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         7: goto 12
         8: .line 491
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode com.oracle.truffle.api.instrumentation.EventContext com.oracle.truffle.api.instrumentation.EventBinding$Source com.oracle.truffle.api.nodes.RootNode java.util.Set int java.lang.StringBuilder com.oracle.truffle.api.source.SourceSection com.oracle.truffle.api.instrumentation.EventContext[] int int
      StackMap stack:
            aload 8 /* contexts */
            iload 10 /* i */
            aaload
            astore 11 /* eventContext */
        start local 11 // com.oracle.truffle.api.instrumentation.EventContext eventContext
         9: .line 492
            aload 11 /* eventContext */
            ifnull 11
        10: .line 493
            iinc 9 /* contextCount */ 1
        end local 11 // com.oracle.truffle.api.instrumentation.EventContext eventContext
        11: .line 490
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 10 /* i */
            aload 8 /* contexts */
            arraylength
            if_icmplt 8
        end local 10 // int i
        13: .line 497
            aload 6 /* msg */
            new java.lang.StringBuilder
            dup
            ldc "Stable AST assumption violated.  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* parentChain */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.inputCount:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " children expected got "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 9 /* contextCount */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 498
            aload 6 /* msg */
            new java.lang.StringBuilder
            dup
            ldc "\n Parent: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* parentSourceSection */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 500
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        16: goto 39
        17: .line 501
      StackMap locals:
      StackMap stack:
            aload 8 /* contexts */
            iload 10 /* i */
            aaload
            astore 11 /* eventContext */
        start local 11 // com.oracle.truffle.api.instrumentation.EventContext eventContext
        18: .line 502
            aload 11 /* eventContext */
            ifnonnull 20
        19: .line 503
            goto 38
        20: .line 505
      StackMap locals: com.oracle.truffle.api.instrumentation.EventContext
      StackMap stack:
            aload 6 /* msg */
            new java.lang.StringBuilder
            dup
            ldc "\nChild["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 10 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 11 /* eventContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 506
            aload 11 /* eventContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            astore 12 /* node */
        start local 12 // com.oracle.truffle.api.nodes.Node node
        22: .line 507
            ldc "  "
            astore 13 /* indent */
        start local 13 // java.lang.String indent
        23: .line 508
            goto 37
        24: .line 509
      StackMap locals: com.oracle.truffle.api.nodes.Node java.lang.String
      StackMap stack:
            aload 6 /* msg */
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 510
            aload 6 /* msg */
            aload 13 /* indent */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 511
            aload 12 /* node */
            aload 1 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            if_acmpne 29
        27: .line 512
            aload 6 /* msg */
            ldc "Parent"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        28: .line 513
            goto 38
        29: .line 515
      StackMap locals:
      StackMap stack:
            aload 12 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            ifnonnull 32
        30: .line 516
            aload 6 /* msg */
            ldc "null parent = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        31: .line 517
            goto 34
        32: .line 518
      StackMap locals:
      StackMap stack:
            aload 12 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            aload 12 /* node */
            invokestatic com.oracle.truffle.api.nodes.NodeUtil.findChildField:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/NodeFieldAccessor;
            invokevirtual com.oracle.truffle.api.nodes.NodeFieldAccessor.getName:()Ljava/lang/String;
            astore 14 /* fieldName */
        start local 14 // java.lang.String fieldName
        33: .line 519
            aload 6 /* msg */
            new java.lang.StringBuilder
            dup
            aload 12 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 14 /* fieldName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 14 // java.lang.String fieldName
        34: .line 522
      StackMap locals:
      StackMap stack:
            aload 6 /* msg */
            new java.lang.StringBuilder
            dup
            aload 12 /* node */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "#"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* node */
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        35: .line 523
            new java.lang.StringBuilder
            dup
            aload 13 /* indent */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "  "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 13 /* indent */
        36: .line 524
            aload 12 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 12 /* node */
        37: .line 508
      StackMap locals:
      StackMap stack:
            aload 12 /* node */
            ifnonnull 24
        end local 13 // java.lang.String indent
        end local 12 // com.oracle.truffle.api.nodes.Node node
        end local 11 // com.oracle.truffle.api.instrumentation.EventContext eventContext
        38: .line 500
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        39: iload 10 /* i */
            aload 8 /* contexts */
            arraylength
            if_icmplt 17
        end local 10 // int i
        end local 9 // int contextCount
        end local 8 // com.oracle.truffle.api.instrumentation.EventContext[] contexts
        end local 7 // com.oracle.truffle.api.source.SourceSection parentSourceSection
        40: .line 528
            goto 45
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode com.oracle.truffle.api.instrumentation.EventContext com.oracle.truffle.api.instrumentation.EventBinding$Source com.oracle.truffle.api.nodes.RootNode java.util.Set int java.lang.StringBuilder
      StackMap stack: java.lang.Throwable
        41: astore 7 /* e */
        start local 7 // java.lang.Throwable e
        42: .line 530
            new java.lang.AssertionError
            dup
            ldc "Stable AST assumption violated"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            astore 8 /* error */
        start local 8 // java.lang.AssertionError error
        43: .line 531
            aload 8 /* error */
            aload 7 /* e */
            invokevirtual java.lang.AssertionError.addSuppressed:(Ljava/lang/Throwable;)V
        44: .line 532
            aload 8 /* error */
            athrow
        end local 8 // java.lang.AssertionError error
        end local 7 // java.lang.Throwable e
        45: .line 534
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            aload 6 /* msg */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 6 // java.lang.StringBuilder msg
        end local 5 // int index
        end local 4 // java.util.Set providedTags
        end local 3 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext parentContext
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode parentChain
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   46     0          parentChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventProviderWithInputChainNode;
            0   46     1        parentContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   46     2              binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0   46     3             rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0   46     4         providedTags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            0   46     5                index  I
            1   46     6                  msg  Ljava/lang/StringBuilder;
            2   40     7  parentSourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            5   40     8             contexts  [Lcom/oracle/truffle/api/instrumentation/EventContext;
            6   40     9         contextCount  I
            7   13    10                    i  I
            9   11    11         eventContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
           16   40    10                    i  I
           18   38    11         eventContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
           22   38    12                 node  Lcom/oracle/truffle/api/nodes/Node;
           23   38    13               indent  Ljava/lang/String;
           33   34    14            fieldName  Ljava/lang/String;
           42   45     7                    e  Ljava/lang/Throwable;
           43   45     8                error  Ljava/lang/AssertionError;
      Exception table:
        from    to  target  type
           1    40      41  Class java.lang.Throwable
    Signature: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventProviderWithInputChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set<Ljava/lang/Class<*>;>;I)Z
    MethodParameters:
               Name  Flags
      parentChain    
      parentContext  
      binding        
      rootNode       
      providedTags   
      index          

  com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode createEventChainCallback(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, com.oracle.truffle.api.nodes.RootNode, java.util.Set<java.lang.Class<?>>, com.oracle.truffle.api.nodes.Node, com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0000) 
    Code:
      stack=6, locals=16, args_size=7
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 3 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 4 // java.util.Set providedTags
        start local 5 // com.oracle.truffle.api.nodes.Node instrumentedNode
        start local 6 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
         0: .line 540
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.getElement:()Ljava/lang/Object;
            astore 8 /* element */
        start local 8 // java.lang.Object element
         1: .line 541
            aload 8 /* element */
            instanceof com.oracle.truffle.api.instrumentation.ExecutionEventListener
            ifeq 4
         2: .line 542
            new com.oracle.truffle.api.instrumentation.ProbeNode$EventFilterChainNode
            dup
            aload 2 /* binding */
            aload 8 /* element */
            checkcast com.oracle.truffle.api.instrumentation.ExecutionEventListener
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$EventFilterChainNode.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/instrumentation/ExecutionEventListener;)V
            astore 7 /* next */
        start local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
         3: .line 543
            goto 25
        end local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
         4: .line 544
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.EventBinding$Source com.oracle.truffle.api.nodes.RootNode java.util.Set com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection top java.lang.Object
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.$assertionsDisabled:Z
            ifne 5
            aload 8 /* element */
            instanceof com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* binding */
            aload 8 /* element */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.createEventNode:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/lang/Object;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            astore 9 /* eventNode */
        start local 9 // com.oracle.truffle.api.instrumentation.ExecutionEventNode eventNode
         6: .line 546
            aload 9 /* eventNode */
            ifnonnull 8
         7: .line 548
            aconst_null
            areturn
         8: .line 550
      StackMap locals: com.oracle.truffle.api.instrumentation.ExecutionEventNode
      StackMap stack:
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.getInputFilter:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            ifnull 24
         9: .line 551
            aload 0 /* this */
            aload 1 /* frame */
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.findParentChain:(Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 10 /* parent */
        start local 10 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode parent
        10: .line 552
            aload 10 /* parent */
            checkcast com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode
            astore 11 /* parentChain */
        start local 11 // com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode parentChain
        11: .line 555
            aload 11 /* parentChain */
            ifnonnull 14
        12: .line 556
            iconst_0
            istore 12 /* baseInput */
        start local 12 // int baseInput
        13: .line 557
            goto 21
        end local 12 // int baseInput
        14: .line 558
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode
      StackMap stack:
            aload 11 /* parentChain */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.findProbe:()Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.getContext:()Lcom/oracle/truffle/api/instrumentation/EventContext;
            astore 13 /* parentContext */
        start local 13 // com.oracle.truffle.api.instrumentation.EventContext parentContext
        15: .line 559
            aload 2 /* binding */
            aload 3 /* rootNode */
            aload 4 /* providedTags */
            aload 13 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            aload 13 /* parentContext */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 5 /* instrumentedNode */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.indexOfChild:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;)I
            istore 14 /* childIndex */
        start local 14 // int childIndex
        16: .line 560
            aload 11 /* parentChain */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.inputBaseIndex:I
            istore 15 /* inputBaseIndex */
        start local 15 // int inputBaseIndex
        17: .line 561
            iload 14 /* childIndex */
            ifge 20
        18: .line 563
            iload 15 /* inputBaseIndex */
            aload 11 /* parentChain */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.inputCount:I
            iadd
            istore 12 /* baseInput */
        start local 12 // int baseInput
        19: .line 564
            goto 21
        end local 12 // int baseInput
        20: .line 566
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.EventBinding$Source com.oracle.truffle.api.nodes.RootNode java.util.Set com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection top java.lang.Object com.oracle.truffle.api.instrumentation.ExecutionEventNode com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode top com.oracle.truffle.api.instrumentation.EventContext int int
      StackMap stack:
            iload 15 /* inputBaseIndex */
            iload 14 /* childIndex */
            iadd
            istore 12 /* baseInput */
        end local 15 // int inputBaseIndex
        end local 14 // int childIndex
        end local 13 // com.oracle.truffle.api.instrumentation.EventContext parentContext
        start local 12 // int baseInput
        21: .line 569
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.EventBinding$Source com.oracle.truffle.api.nodes.RootNode java.util.Set com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection top java.lang.Object com.oracle.truffle.api.instrumentation.ExecutionEventNode com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode int
      StackMap stack:
            aload 2 /* binding */
            aload 3 /* rootNode */
            aload 4 /* providedTags */
            aload 5 /* instrumentedNode */
            aload 6 /* instrumentedNodeSourceSection */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.countChildren:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;)I
            istore 13 /* inputCount */
        start local 13 // int inputCount
        22: .line 570
            new com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode
            dup
            aload 2 /* binding */
            aload 9 /* eventNode */
            iload 12 /* baseInput */
            iload 13 /* inputCount */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;II)V
            astore 7 /* next */
        end local 13 // int inputCount
        end local 12 // int baseInput
        end local 11 // com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode parentChain
        end local 10 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode parent
        start local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
        23: .line 571
            goto 25
        end local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
        24: .line 572
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode
            dup
            aload 2 /* binding */
            aload 9 /* eventNode */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;)V
            astore 7 /* next */
        end local 9 // com.oracle.truffle.api.instrumentation.ExecutionEventNode eventNode
        start local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
        25: .line 575
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.EventBinding$Source com.oracle.truffle.api.nodes.RootNode java.util.Set com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.lang.Object
      StackMap stack:
            aload 7 /* next */
            areturn
        end local 8 // java.lang.Object element
        end local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
        end local 6 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
        end local 5 // com.oracle.truffle.api.nodes.Node instrumentedNode
        end local 4 // java.util.Set providedTags
        end local 3 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   26     0                           this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   26     1                          frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   26     2                        binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0   26     3                       rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0   26     4                   providedTags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            0   26     5               instrumentedNode  Lcom/oracle/truffle/api/nodes/Node;
            0   26     6  instrumentedNodeSourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            3    4     7                           next  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           23   24     7                           next  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           25   26     7                           next  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            1   26     8                        element  Ljava/lang/Object;
            6   25     9                      eventNode  Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
           10   23    10                         parent  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
           11   23    11                    parentChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventProviderWithInputChainNode;
           13   14    12                      baseInput  I
           19   20    12                      baseInput  I
           21   23    12                      baseInput  I
           15   21    13                  parentContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
           16   21    14                     childIndex  I
           17   21    15                 inputBaseIndex  I
           22   23    13                     inputCount  I
    Signature: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set<Ljava/lang/Class<*>;>;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
                               Name  Flags
      frame                          
      binding                        
      rootNode                       
      providedTags                   
      instrumentedNode               
      instrumentedNodeSourceSection  

  static com.oracle.truffle.api.instrumentation.EventContext[] findChildContexts(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, com.oracle.truffle.api.nodes.RootNode, java.util.Set<java.lang.Class<?>>, com.oracle.truffle.api.nodes.Node, com.oracle.truffle.api.source.SourceSection, int);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;I)[Lcom/oracle/truffle/api/instrumentation/EventContext;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 2 // java.util.Set providedTags
        start local 3 // com.oracle.truffle.api.nodes.Node instrumentedNode
        start local 4 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
        start local 5 // int inputCount
         0: .line 580
            new com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup
            dup
            aload 0 /* binding */
            aload 1 /* rootNode */
            aload 2 /* providedTags */
            aload 3 /* instrumentedNode */
            aload 4 /* instrumentedNodeSourceSection */
            iload 5 /* inputCount */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;I)V
            astore 6 /* visitor */
        start local 6 // com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup visitor
         1: .line 581
            aload 3 /* instrumentedNode */
            aload 6 /* visitor */
            invokestatic com.oracle.truffle.api.nodes.NodeUtil.forEachChild:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;)Z
            pop
         2: .line 582
            aload 6 /* visitor */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup.foundContexts:[Lcom/oracle/truffle/api/instrumentation/EventContext;
            areturn
        end local 6 // com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup visitor
        end local 5 // int inputCount
        end local 4 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
        end local 3 // com.oracle.truffle.api.nodes.Node instrumentedNode
        end local 2 // java.util.Set providedTags
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    3     0                        binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0    3     1                       rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0    3     2                   providedTags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            0    3     3               instrumentedNode  Lcom/oracle/truffle/api/nodes/Node;
            0    3     4  instrumentedNodeSourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            0    3     5                     inputCount  I
            1    3     6                        visitor  Lcom/oracle/truffle/api/instrumentation/ProbeNode$InputChildContextLookup;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set<Ljava/lang/Class<*>;>;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;I)[Lcom/oracle/truffle/api/instrumentation/EventContext;
    MethodParameters:
                               Name  Flags
      binding                        
      rootNode                       
      providedTags                   
      instrumentedNode               
      instrumentedNodeSourceSection  
      inputCount                     

  private static int indexOfChild(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, com.oracle.truffle.api.nodes.RootNode, java.util.Set<java.lang.Class<?>>, com.oracle.truffle.api.nodes.Node, com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.api.nodes.Node);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 2 // java.util.Set providedTags
        start local 3 // com.oracle.truffle.api.nodes.Node instrumentedNode
        start local 4 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
        start local 5 // com.oracle.truffle.api.nodes.Node lookupChild
         0: .line 587
            new com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup
            dup
            aload 0 /* binding */
            aload 1 /* rootNode */
            aload 2 /* providedTags */
            aload 3 /* instrumentedNode */
            aload 4 /* instrumentedNodeSourceSection */
            aload 5 /* lookupChild */
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;)V
            astore 6 /* visitor */
        start local 6 // com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup visitor
         1: .line 588
            aload 3 /* instrumentedNode */
            aload 6 /* visitor */
            invokestatic com.oracle.truffle.api.nodes.NodeUtil.forEachChild:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;)Z
            pop
         2: .line 589
            aload 6 /* visitor */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup.found:Z
            ifeq 3
            aload 6 /* visitor */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup.index:I
            goto 4
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup
      StackMap stack:
         3: iconst_m1
      StackMap locals:
      StackMap stack: int
         4: ireturn
        end local 6 // com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup visitor
        end local 5 // com.oracle.truffle.api.nodes.Node lookupChild
        end local 4 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
        end local 3 // com.oracle.truffle.api.nodes.Node instrumentedNode
        end local 2 // java.util.Set providedTags
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    5     0                        binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0    5     1                       rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0    5     2                   providedTags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            0    5     3               instrumentedNode  Lcom/oracle/truffle/api/nodes/Node;
            0    5     4  instrumentedNodeSourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            0    5     5                    lookupChild  Lcom/oracle/truffle/api/nodes/Node;
            1    5     6                        visitor  Lcom/oracle/truffle/api/instrumentation/ProbeNode$InputChildIndexLookup;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set<Ljava/lang/Class<*>;>;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;)I
    MethodParameters:
                               Name  Flags
      binding                        
      rootNode                       
      providedTags                   
      instrumentedNode               
      instrumentedNodeSourceSection  
      lookupChild                    

  private static int countChildren(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, com.oracle.truffle.api.nodes.RootNode, java.util.Set<java.lang.Class<?>>, com.oracle.truffle.api.nodes.Node, com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=6, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        start local 2 // java.util.Set providedTags
        start local 3 // com.oracle.truffle.api.nodes.Node instrumentedNode
        start local 4 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
         0: .line 593
            new com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup
            dup
            aload 0 /* binding */
            aload 1 /* rootNode */
            aload 2 /* providedTags */
            aload 3 /* instrumentedNode */
            aload 4 /* instrumentedNodeSourceSection */
            aconst_null
            invokespecial com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup.<init>:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/nodes/Node;)V
            astore 5 /* visitor */
        start local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup visitor
         1: .line 594
            aload 3 /* instrumentedNode */
            aload 5 /* visitor */
            invokestatic com.oracle.truffle.api.nodes.NodeUtil.forEachChild:(Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/nodes/NodeVisitor;)Z
            pop
         2: .line 595
            aload 5 /* visitor */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup.index:I
            ireturn
        end local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup visitor
        end local 4 // com.oracle.truffle.api.source.SourceSection instrumentedNodeSourceSection
        end local 3 // com.oracle.truffle.api.nodes.Node instrumentedNode
        end local 2 // java.util.Set providedTags
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    3     0                        binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0    3     1                       rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            0    3     2                   providedTags  Ljava/util/Set<Ljava/lang/Class<*>;>;
            0    3     3               instrumentedNode  Lcom/oracle/truffle/api/nodes/Node;
            0    3     4  instrumentedNodeSourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            1    3     5                        visitor  Lcom/oracle/truffle/api/instrumentation/ProbeNode$InputChildIndexLookup;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Lcom/oracle/truffle/api/nodes/RootNode;Ljava/util/Set<Ljava/lang/Class<*>;>;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/api/source/SourceSection;)I
    MethodParameters:
                               Name  Flags
      binding                        
      rootNode                       
      providedTags                   
      instrumentedNode               
      instrumentedNodeSourceSection  

  private com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode findParentChain(com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventBinding<?>);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding binding
         0: .line 599
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 3 /* node */
        start local 3 // com.oracle.truffle.api.nodes.Node node
         1: .line 600
            goto 12
         2: .line 601
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 3 /* node */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode
            ifeq 9
         3: .line 602
            aload 3 /* node */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode.getProbeNode:()Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            astore 4 /* probe */
        start local 4 // com.oracle.truffle.api.instrumentation.ProbeNode probe
         4: .line 603
            aload 4 /* probe */
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode.lazyUpdate:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 5 /* c */
        start local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode c
         5: .line 604
            aload 5 /* c */
            ifnull 7
         6: .line 605
            aload 5 /* c */
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.find:(Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 5 /* c */
         7: .line 607
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            aload 5 /* c */
            ifnull 11
         8: .line 608
            aload 5 /* c */
            areturn
        end local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode c
        end local 4 // com.oracle.truffle.api.instrumentation.ProbeNode probe
         9: .line 610
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            instanceof com.oracle.truffle.api.nodes.RootNode
            ifeq 11
        10: .line 611
            goto 13
        11: .line 613
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 3 /* node */
        12: .line 600
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            ifnonnull 2
        13: .line 615
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            ifnonnull 15
        14: .line 616
            new java.lang.IllegalStateException
            dup
            ldc "The AST node is not yet adopted. "
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 618
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // com.oracle.truffle.api.nodes.Node node
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding binding
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   16     1    frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   16     2  binding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            1   16     3     node  Lcom/oracle/truffle/api/nodes/Node;
            4    9     4    probe  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            5    9     5        c  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    Signature: (Lcom/oracle/truffle/api/frame/VirtualFrame;Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
         Name  Flags
      frame    
      binding  

  private com.oracle.truffle.api.instrumentation.ExecutionEventNode createEventNode(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, );
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/lang/Object;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
        start local 1 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        start local 2 // java.lang.Object element
         0: .line 625
            aload 2 /* element */
            checkcast com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokeinterface com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory.create:(Lcom/oracle/truffle/api/instrumentation/EventContext;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            astore 3 /* eventNode */
        start local 3 // com.oracle.truffle.api.instrumentation.ExecutionEventNode eventNode
         1: .line 626
            aload 3 /* eventNode */
            ifnull 14
            aload 3 /* eventNode */
            invokevirtual com.oracle.truffle.api.instrumentation.ExecutionEventNode.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            ifnull 14
         2: .line 627
            new java.lang.IllegalStateException
            dup
            ldc "Returned EventNode %s was already adopted by another AST."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* eventNode */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // com.oracle.truffle.api.instrumentation.ExecutionEventNode eventNode
         3: .line 629
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* t */
        start local 4 // java.lang.Throwable t
         4: .line 630
            aload 4 /* t */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentException
            ifeq 12
         5: .line 631
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         6: .line 632
            new java.lang.IllegalStateException
            dup
         7: .line 633
            ldc "Error propagation is not supported in %s.create(%s). Errors propagated in this method may result in an AST that never stabilizes. Propagate the error in one of the execution event node events like onEnter, onInputValue, onReturn or onReturnExceptional to resolve this problem."
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 636
            ldc Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
         9: .line 637
            ldc Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
        10: .line 633
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        11: .line 632
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 639
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.instrumentation.EventBinding$Source java.lang.Object top java.lang.Throwable
      StackMap stack:
            aload 1 /* binding */
            ldc "ProbeNodeFactory.create"
            aload 4 /* t */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.exceptionEventForClientInstrument:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/lang/String;Ljava/lang/Throwable;)V
        13: .line 640
            aconst_null
            areturn
        end local 4 // java.lang.Throwable t
        start local 3 // com.oracle.truffle.api.instrumentation.ExecutionEventNode eventNode
        14: .line 642
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode com.oracle.truffle.api.instrumentation.EventBinding$Source java.lang.Object com.oracle.truffle.api.instrumentation.ExecutionEventNode
      StackMap stack:
            aload 3 /* eventNode */
            areturn
        end local 3 // com.oracle.truffle.api.instrumentation.ExecutionEventNode eventNode
        end local 2 // java.lang.Object element
        end local 1 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;
            0   15     1    binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0   15     2    element  Ljava/lang/Object;
            1    3     3  eventNode  Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
           14   15     3  eventNode  Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
            4   14     4          t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     3       3  Class java.lang.Throwable
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Ljava/lang/Object;)Lcom/oracle/truffle/api/instrumentation/ExecutionEventNode;
    MethodParameters:
         Name  Flags
      binding  
      element  

  static void exceptionEventForClientInstrument(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>, java.lang.String, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/lang/String;Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source b
        start local 1 // java.lang.String eventName
        start local 2 // java.lang.Throwable t
         0: .line 651
            aload 2 /* t */
            instanceof java.lang.ThreadDeath
            ifeq 2
         1: .line 653
            aload 2 /* t */
            checkcast java.lang.ThreadDeath
            athrow
         2: .line 655
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.getCurrentPolyglotEngine:()Ljava/lang/Object;
            astore 3 /* polyglotEngine */
        start local 3 // java.lang.Object polyglotEngine
         3: .line 656
            aload 0 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;
            instanceof com.oracle.truffle.api.instrumentation.InstrumentationHandler$EngineInstrumenter
            ifne 4
            aload 3 /* polyglotEngine */
            ifnull 5
            invokestatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.engineAccess:()Lcom/oracle/truffle/api/impl/Accessor$EngineSupport;
            aload 3 /* polyglotEngine */
            invokevirtual com.oracle.truffle.api.impl.Accessor$EngineSupport.isInstrumentExceptionsAreThrown:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 657
      StackMap locals: java.lang.Object
      StackMap stack:
            ldc Ljava/lang/RuntimeException;
            aload 2 /* t */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.sthrow:(Ljava/lang/Class;Ljava/lang/Throwable;)Ljava/lang/Throwable;
            checkcast java.lang.RuntimeException
            athrow
         5: .line 660
      StackMap locals:
      StackMap stack:
            aload 0 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$AbstractInstrumenter;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter
            astore 4 /* instrumenter */
        start local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
         6: .line 662
            ldc "Event %s failed for instrument class %s and listener/factory %s."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 663
            aload 1 /* eventName */
            aastore
            dup
            iconst_1
            aload 4 /* instrumenter */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.getInstrumentClassName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 0 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.getElement:()Ljava/lang/Object;
            aastore
         8: .line 662
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 5 /* message */
        start local 5 // java.lang.String message
         9: .line 665
            new java.lang.Exception
            dup
            aload 5 /* message */
            aload 2 /* t */
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            astore 6 /* exception */
        start local 6 // java.lang.Exception exception
        10: .line 666
            new java.io.PrintStream
            dup
            aload 4 /* instrumenter */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter.getEnv:()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.err:()Ljava/io/OutputStream;
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
            astore 7 /* stream */
        start local 7 // java.io.PrintStream stream
        11: .line 667
            aload 6 /* exception */
            aload 7 /* stream */
            invokevirtual java.lang.Exception.printStackTrace:(Ljava/io/PrintStream;)V
        12: .line 668
            return
        end local 7 // java.io.PrintStream stream
        end local 6 // java.lang.Exception exception
        end local 5 // java.lang.String message
        end local 4 // com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter instrumenter
        end local 3 // java.lang.Object polyglotEngine
        end local 2 // java.lang.Throwable t
        end local 1 // java.lang.String eventName
        end local 0 // com.oracle.truffle.api.instrumentation.EventBinding$Source b
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0               b  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            0   13     1       eventName  Ljava/lang/String;
            0   13     2               t  Ljava/lang/Throwable;
            3   13     3  polyglotEngine  Ljava/lang/Object;
            6   13     4    instrumenter  Lcom/oracle/truffle/api/instrumentation/InstrumentationHandler$InstrumentClientInstrumenter;
            9   13     5         message  Ljava/lang/String;
           10   13     6       exception  Ljava/lang/Exception;
           11   13     7          stream  Ljava/io/PrintStream;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;Ljava/lang/String;Ljava/lang/Throwable;)V
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      b          
      eventName  
      t          

  public com.oracle.truffle.api.nodes.NodeCost getCost();
    descriptor: ()Lcom/oracle/truffle/api/nodes/NodeCost;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
         0: .line 673
            getstatic com.oracle.truffle.api.nodes.NodeCost.NONE:Lcom/oracle/truffle/api/nodes/NodeCost;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode;

  private static boolean checkInteropType(, com.oracle.truffle.api.instrumentation.EventBinding$Source<?>);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.Object value
        start local 1 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
         0: .line 677
            aload 0 /* value */
            ifnull 17
            aload 0 /* value */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
            if_acmpeq 17
            aload 0 /* value */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_IGNORED:Ljava/lang/Object;
            if_acmpeq 17
            getstatic com.oracle.truffle.api.instrumentation.InstrumentAccessor.ACCESSOR:Lcom/oracle/truffle/api/instrumentation/InstrumentAccessor;
            aload 0 /* value */
            invokevirtual com.oracle.truffle.api.instrumentation.InstrumentAccessor.isTruffleObject:(Ljava/lang/Object;)Z
            ifne 17
         1: .line 678
            aload 0 /* value */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 2 /* clazz */
        start local 2 // java.lang.Class clazz
         2: .line 679
            aload 2 /* clazz */
            ldc Ljava/lang/Byte;
            if_acmpeq 17
         3: .line 680
            aload 2 /* clazz */
            ldc Ljava/lang/Short;
            if_acmpeq 17
         4: .line 681
            aload 2 /* clazz */
            ldc Ljava/lang/Integer;
            if_acmpeq 17
         5: .line 682
            aload 2 /* clazz */
            ldc Ljava/lang/Long;
            if_acmpeq 17
         6: .line 683
            aload 2 /* clazz */
            ldc Ljava/lang/Float;
            if_acmpeq 17
         7: .line 684
            aload 2 /* clazz */
            ldc Ljava/lang/Double;
            if_acmpeq 17
         8: .line 685
            aload 2 /* clazz */
            ldc Ljava/lang/Character;
            if_acmpeq 17
         9: .line 686
            aload 2 /* clazz */
            ldc Ljava/lang/Boolean;
            if_acmpeq 17
        10: .line 687
            aload 2 /* clazz */
            ldc Ljava/lang/String;
            if_acmpeq 17
        11: .line 688
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
        12: .line 689
            new java.lang.ClassCastException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " isn't allowed Truffle interop type!"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.ClassCastException.<init>:(Ljava/lang/String;)V
            astore 3 /* ccex */
        start local 3 // java.lang.ClassCastException ccex
        13: .line 690
            aload 1 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.isLanguageBinding:()Z
            ifeq 15
        14: .line 691
            aload 3 /* ccex */
            athrow
        15: .line 693
      StackMap locals: java.lang.Class java.lang.ClassCastException
      StackMap stack:
            aload 1 /* binding */
            ldc "onUnwind"
            aload 3 /* ccex */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.exceptionEventForClientInstrument:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/lang/String;Ljava/lang/Throwable;)V
        16: .line 694
            iconst_0
            ireturn
        end local 3 // java.lang.ClassCastException ccex
        end local 2 // java.lang.Class clazz
        17: .line 698
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        end local 0 // java.lang.Object value
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   18     0    value  Ljava/lang/Object;
            0   18     1  binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
            2   17     2    clazz  Ljava/lang/Class<*>;
           13   17     3     ccex  Ljava/lang/ClassCastException;
    Signature: (Ljava/lang/Object;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;)Z
    MethodParameters:
         Name  Flags
      value    
      binding  

  private static java.lang.Object mergePostUnwindReturns(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object r1
        start local 1 // java.lang.Object r2
         0: .line 703
            aload 0 /* r1 */
            ifnull 1
            aload 1 /* r2 */
            ifnonnull 2
         1: .line 704
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 706
      StackMap locals:
      StackMap stack:
            aload 0 /* r1 */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_IGNORED:Ljava/lang/Object;
            if_acmpne 4
         3: .line 707
            aload 1 /* r2 */
            areturn
         4: .line 709
      StackMap locals:
      StackMap stack:
            aload 1 /* r2 */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_IGNORED:Ljava/lang/Object;
            if_acmpne 6
         5: .line 710
            aload 0 /* r1 */
            areturn
         6: .line 713
      StackMap locals:
      StackMap stack:
            aload 0 /* r1 */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
            if_acmpeq 7
            aload 1 /* r2 */
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
            if_acmpne 8
         7: .line 714
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_REENTER:Ljava/lang/Object;
            areturn
         8: .line 716
      StackMap locals:
      StackMap stack:
            aload 0 /* r1 */
            areturn
        end local 1 // java.lang.Object r2
        end local 0 // java.lang.Object r1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0    r1  Ljava/lang/Object;
            0    9     1    r2  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      r1    
      r2    

  private static <T extends java.lang.Throwable> T sthrow(java.lang.Class<T>, java.lang.Throwable) throws T;
    descriptor: (Ljava/lang/Class;Ljava/lang/Throwable;)Ljava/lang/Throwable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // java.lang.Class type
        start local 1 // java.lang.Throwable t
         0: .line 721
            aload 1 /* t */
            athrow
        end local 1 // java.lang.Throwable t
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/Class<TT;>;
            0    1     1     t  Ljava/lang/Throwable;
    Exceptions:
      throws java.lang.Throwable
    Signature: <T:Ljava/lang/Throwable;>(Ljava/lang/Class<TT;>;Ljava/lang/Throwable;)TT;^TT;
    MethodParameters:
      Name  Flags
      type  
      t     
}
SourceFile: "ProbeNode.java"
NestMembers:
  com.oracle.truffle.api.instrumentation.ProbeNode$1  com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode  com.oracle.truffle.api.instrumentation.ProbeNode$EventFilterChainNode  com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode  com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode  com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode$SavedInputValueID  com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup  com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup  com.oracle.truffle.api.instrumentation.ProbeNode$InputValueChainNode  com.oracle.truffle.api.instrumentation.ProbeNode$InstrumentableChildVisitor  com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference
InnerClasses:
  public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract EngineSupport = com.oracle.truffle.api.impl.Accessor$EngineSupport of com.oracle.truffle.api.impl.Accessor
  public abstract InteropSupport = com.oracle.truffle.api.impl.Accessor$InteropSupport of com.oracle.truffle.api.impl.Accessor
  final Source = com.oracle.truffle.api.instrumentation.EventBinding$Source of com.oracle.truffle.api.instrumentation.EventBinding
  public abstract WrapperNode = com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode of com.oracle.truffle.api.instrumentation.InstrumentableNode
  abstract AbstractInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$AbstractInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
  final EngineInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$EngineInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
  final InstrumentClientInstrumenter = com.oracle.truffle.api.instrumentation.InstrumentationHandler$InstrumentClientInstrumenter of com.oracle.truffle.api.instrumentation.InstrumentationHandler
  com.oracle.truffle.api.instrumentation.ProbeNode$1
  abstract EventChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  private EventFilterChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$EventFilterChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  EventProviderChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  EventProviderWithInputChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$EventProviderWithInputChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  private InputChildContextLookup = com.oracle.truffle.api.instrumentation.ProbeNode$InputChildContextLookup of com.oracle.truffle.api.instrumentation.ProbeNode
  private InputChildIndexLookup = com.oracle.truffle.api.instrumentation.ProbeNode$InputChildIndexLookup of com.oracle.truffle.api.instrumentation.ProbeNode
  private InputValueChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$InputValueChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  private abstract InstrumentableChildVisitor = com.oracle.truffle.api.instrumentation.ProbeNode$InstrumentableChildVisitor of com.oracle.truffle.api.instrumentation.ProbeNode
  RetiredNodeReference = com.oracle.truffle.api.instrumentation.ProbeNode$RetiredNodeReference of com.oracle.truffle.api.instrumentation.ProbeNode
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node