abstract class com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode extends com.oracle.truffle.api.nodes.Node
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
  super_class: com.oracle.truffle.api.nodes.Node
{
  private static final int SEEN_EXCEPTION_ON_ENTER;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

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

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

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

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

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

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

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

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

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

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

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

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

  private final com.oracle.truffle.api.instrumentation.EventBinding$Source<?> binding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;

  private com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode previous;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  private int seen;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE
    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=1, locals=0, args_size=0
         0: .line 816
            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$EventChainNode.$assertionsDisabled:Z
         3: .line 831
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.oracle.truffle.api.instrumentation.EventBinding$Source<?>);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
         0: .line 838
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.nodes.Node.<init>:()V
         1: .line 839
            aload 0 /* this */
            aload 1 /* binding */
            putfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
         2: .line 840
            return
        end local 1 // com.oracle.truffle.api.instrumentation.EventBinding$Source binding
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    3     1  binding  Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;)V
    MethodParameters:
         Name  Flags
      binding  

  final com.oracle.truffle.api.instrumentation.ProbeNode findProbe();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/ProbeNode;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
         0: .line 843
            aload 0 /* this */
            astore 1 /* parent */
        start local 1 // com.oracle.truffle.api.nodes.Node parent
         1: .line 844
            goto 3
         2: .line 845
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aload 1 /* parent */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 1 /* parent */
         3: .line 844
      StackMap locals:
      StackMap stack:
            aload 1 /* parent */
            ifnull 4
            aload 1 /* parent */
            instanceof com.oracle.truffle.api.instrumentation.ProbeNode
            ifeq 2
         4: .line 847
      StackMap locals:
      StackMap stack:
            aload 1 /* parent */
            checkcast com.oracle.truffle.api.instrumentation.ProbeNode
            areturn
        end local 1 // com.oracle.truffle.api.nodes.Node parent
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            1    5     1  parent  Lcom/oracle/truffle/api/nodes/Node;

  final void setNext(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
         0: .line 851
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* next */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.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$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
         1: .line 852
            aload 1 /* next */
            aload 0 /* this */
            putfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.previous:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
         2: .line 853
            return
        end local 1 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode next
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    3     1  next  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
      Name  Flags
      next  

  com.oracle.truffle.api.instrumentation.EventBinding$Source<?> getBinding();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
         0: .line 856
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    Signature: ()Lcom/oracle/truffle/api/instrumentation/EventBinding$Source<*>;

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

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

  final void profileBranch(int);
    descriptor: (I)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // int flag
         0: .line 869
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.seen:I
            iload 1 /* flag */
            iand
            ifne 3
         1: .line 870
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 871
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.seen:I
            iload 1 /* flag */
            ior
            putfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.seen:I
         3: .line 873
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int flag
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    4     1  flag  I
    MethodParameters:
      Name  Flags
      flag  

  static void onDispose(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 876
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 877
            aload 0 /* eventChain */
            astore 3 /* chainNode */
        start local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chainNode
         2: .line 878
            aconst_null
            astore 4 /* prevError */
        start local 4 // java.lang.RuntimeException prevError
         3: .line 879
            goto 9
         4: .line 881
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.lang.RuntimeException
      StackMap stack:
            aload 3 /* chainNode */
            aload 1 /* context */
            aload 2 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.innerOnDispose:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
         5: .line 882
            goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 5 /* t */
        start local 5 // java.lang.Throwable t
         7: .line 884
            aload 3 /* chainNode */
            aload 1 /* context */
            ldc "onDispose"
            aload 4 /* prevError */
            aload 5 /* t */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            astore 4 /* prevError */
        end local 5 // java.lang.Throwable t
         8: .line 886
      StackMap locals:
      StackMap stack:
            aload 3 /* chainNode */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 3 /* chainNode */
         9: .line 879
      StackMap locals:
      StackMap stack:
            aload 3 /* chainNode */
            ifnonnull 4
        10: .line 888
            aload 4 /* prevError */
            ifnull 12
        11: .line 889
            aload 4 /* prevError */
            athrow
        12: .line 891
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.RuntimeException prevError
        end local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chainNode
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0  eventChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   13     1     context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   13     2       frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            2   13     3   chainNode  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            3   13     4   prevError  Ljava/lang/RuntimeException;
            7    8     5           t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.Throwable
    MethodParameters:
            Name  Flags
      eventChain  
      context     
      frame       

  private java.lang.RuntimeException handleError(com.oracle.truffle.api.instrumentation.EventContext, java.lang.String, java.lang.RuntimeException, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // java.lang.String eventName
        start local 3 // java.lang.RuntimeException previousError
        start local 4 // java.lang.Throwable newError
         0: .line 894
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding$Source.isLanguageBinding:()Z
            ifeq 6
         1: .line 895
            aload 3 /* previousError */
            ifnull 5
         2: .line 896
            aload 0 /* this */
            bipush 32
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         3: .line 897
            aload 3 /* previousError */
            aload 4 /* newError */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.addSuppressedException:(Ljava/lang/Throwable;Ljava/lang/Throwable;)V
         4: .line 898
            aload 3 /* previousError */
            areturn
         5: .line 900
      StackMap locals:
      StackMap stack:
            aload 4 /* newError */
            checkcast java.lang.RuntimeException
            areturn
         6: .line 902
      StackMap locals:
      StackMap stack:
            aload 4 /* newError */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentException
            ifeq 15
         7: .line 903
            aload 0 /* this */
            bipush 64
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         8: .line 904
            aload 4 /* newError */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentException
            getfield com.oracle.truffle.api.instrumentation.InstrumentException.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* context */
            if_acmpne 15
         9: .line 905
            aload 4 /* newError */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentException
            getfield com.oracle.truffle.api.instrumentation.InstrumentException.delegate:Ljava/lang/RuntimeException;
            astore 5 /* unwrapped */
        start local 5 // java.lang.RuntimeException unwrapped
        10: .line 906
            aload 3 /* previousError */
            ifnull 14
        11: .line 907
            aload 0 /* this */
            bipush 32
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        12: .line 908
            aload 3 /* previousError */
            aload 5 /* unwrapped */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.addSuppressedException:(Ljava/lang/Throwable;Ljava/lang/Throwable;)V
        13: .line 909
            aload 3 /* previousError */
            areturn
        14: .line 911
      StackMap locals: java.lang.RuntimeException
      StackMap stack:
            aload 5 /* unwrapped */
            areturn
        end local 5 // java.lang.RuntimeException unwrapped
        15: .line 914
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            sipush 128
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        16: .line 915
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            aload 2 /* eventName */
            aload 4 /* newError */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.exceptionEventForClientInstrument:(Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;Ljava/lang/String;Ljava/lang/Throwable;)V
        17: .line 917
            aload 3 /* previousError */
            areturn
        end local 4 // java.lang.Throwable newError
        end local 3 // java.lang.RuntimeException previousError
        end local 2 // java.lang.String eventName
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   18     1        context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   18     2      eventName  Ljava/lang/String;
            0   18     3  previousError  Ljava/lang/RuntimeException;
            0   18     4       newError  Ljava/lang/Throwable;
           10   15     5      unwrapped  Ljava/lang/RuntimeException;
    MethodParameters:
               Name  Flags
      context        
      eventName      
      previousError  
      newError       

  private static void addSuppressedException(java.lang.Throwable, java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;Ljava/lang/Throwable;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Throwable prev
        start local 1 // java.lang.Throwable t
         0: .line 922
            aload 0 /* prev */
            aload 1 /* t */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
         1: .line 923
            return
        end local 1 // java.lang.Throwable t
        end local 0 // java.lang.Throwable prev
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  prev  Ljava/lang/Throwable;
            0    2     1     t  Ljava/lang/Throwable;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      prev  
      t     

  protected abstract void innerOnDispose(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      context  
      frame    

  static void onEnter(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 929
            aload 0 /* eventChain */
            astore 3 /* current */
        start local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
         1: .line 930
            aconst_null
            astore 4 /* unwind */
        start local 4 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         2: .line 931
            aconst_null
            astore 5 /* prevError */
        start local 5 // java.lang.RuntimeException prevError
         3: .line 932
            goto 14
         4: .line 934
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.UnwindException java.lang.RuntimeException
      StackMap stack:
            aload 3 /* current */
            aload 1 /* context */
            aload 2 /* frame */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.innerOnEnter:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
         5: .line 935
            goto 13
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.instrumentation.UnwindException
         6: astore 6 /* ex */
        start local 6 // com.oracle.truffle.api.instrumentation.UnwindException ex
         7: .line 936
            aload 3 /* current */
            sipush 256
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         8: .line 937
            aload 3 /* current */
            aload 4 /* unwind */
            aload 6 /* ex */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleUnwind:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 4 /* unwind */
        end local 6 // com.oracle.truffle.api.instrumentation.UnwindException ex
         9: goto 13
        10: .line 938
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6 /* t */
        start local 6 // java.lang.Throwable t
        11: .line 939
            aload 3 /* current */
            iconst_1
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        12: .line 940
            aload 3 /* current */
            aload 1 /* context */
            ldc "onEnter"
            aload 5 /* prevError */
            aload 6 /* t */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            astore 5 /* prevError */
        end local 6 // java.lang.Throwable t
        13: .line 942
      StackMap locals:
      StackMap stack:
            aload 3 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 3 /* current */
        14: .line 932
      StackMap locals:
      StackMap stack:
            aload 3 /* current */
            ifnonnull 4
        15: .line 944
            aload 5 /* prevError */
            ifnull 17
        16: .line 945
            aload 5 /* prevError */
            athrow
        17: .line 947
      StackMap locals:
      StackMap stack:
            aload 4 /* unwind */
            ifnull 19
        18: .line 948
            aload 4 /* unwind */
            athrow
        19: .line 950
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.lang.RuntimeException prevError
        end local 4 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 3 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   20     0  eventChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   20     1     context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   20     2       frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            1   20     3     current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            2   20     4      unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            3   20     5   prevError  Ljava/lang/RuntimeException;
            7    9     6          ex  Lcom/oracle/truffle/api/instrumentation/UnwindException;
           11   13     6           t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     5       6  Class com.oracle.truffle.api.instrumentation.UnwindException
           4     5      10  Class java.lang.Throwable
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
            Name  Flags
      eventChain  
      context     
      frame       

  protected abstract void innerOnEnter(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      context  
      frame    

  static void onInputValue(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventBinding<?>, com.oracle.truffle.api.instrumentation.EventContext, int, );
    descriptor: (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
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=11, args_size=7
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 3 // com.oracle.truffle.api.instrumentation.EventBinding inputBinding
        start local 4 // com.oracle.truffle.api.instrumentation.EventContext inputContext
        start local 5 // int inputIndex
        start local 6 // java.lang.Object inputValue
         0: .line 956
            aload 0 /* eventChain */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.getLast:()Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 7 /* current */
        start local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
         1: .line 957
            aconst_null
            astore 8 /* unwind */
        start local 8 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         2: .line 958
            aconst_null
            astore 9 /* prevError */
        start local 9 // java.lang.RuntimeException prevError
         3: .line 959
            goto 15
         4: .line 961
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.UnwindException java.lang.RuntimeException
      StackMap stack:
            aload 7 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            aload 3 /* inputBinding */
            if_acmpne 14
         5: .line 962
            aload 7 /* current */
            aload 1 /* context */
            aload 2 /* frame */
            aload 7 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            aload 4 /* inputContext */
            iload 5 /* inputIndex */
            aload 6 /* inputValue */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.innerOnInputValue:(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
         6: .line 964
            goto 14
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.instrumentation.UnwindException
         7: astore 10 /* ex */
        start local 10 // com.oracle.truffle.api.instrumentation.UnwindException ex
         8: .line 965
            aload 7 /* current */
            sipush 2048
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         9: .line 966
            aload 7 /* current */
            aload 8 /* unwind */
            aload 10 /* ex */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleUnwind:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 8 /* unwind */
        end local 10 // com.oracle.truffle.api.instrumentation.UnwindException ex
        10: goto 14
        11: .line 967
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10 /* t */
        start local 10 // java.lang.Throwable t
        12: .line 968
            aload 7 /* current */
            bipush 8
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        13: .line 969
            aload 7 /* current */
            aload 1 /* context */
            ldc "onInputValue"
            aload 9 /* prevError */
            aload 10 /* t */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            astore 9 /* prevError */
        end local 10 // java.lang.Throwable t
        14: .line 971
      StackMap locals:
      StackMap stack:
            aload 7 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.previous:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 7 /* current */
        15: .line 959
      StackMap locals:
      StackMap stack:
            aload 7 /* current */
            ifnonnull 4
        16: .line 974
            aload 9 /* prevError */
            ifnull 18
        17: .line 975
            aload 9 /* prevError */
            athrow
        18: .line 977
      StackMap locals:
      StackMap stack:
            aload 8 /* unwind */
            ifnull 20
        19: .line 978
            aload 8 /* unwind */
            athrow
        20: .line 980
      StackMap locals:
      StackMap stack:
            return
        end local 9 // java.lang.RuntimeException prevError
        end local 8 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 7 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        end local 6 // java.lang.Object inputValue
        end local 5 // int inputIndex
        end local 4 // com.oracle.truffle.api.instrumentation.EventContext inputContext
        end local 3 // com.oracle.truffle.api.instrumentation.EventBinding inputBinding
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   21     0    eventChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   21     1       context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   21     2         frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   21     3  inputBinding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            0   21     4  inputContext  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   21     5    inputIndex  I
            0   21     6    inputValue  Ljava/lang/Object;
            1   21     7       current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            2   21     8        unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            3   21     9     prevError  Ljava/lang/RuntimeException;
            8   10    10            ex  Lcom/oracle/truffle/api/instrumentation/UnwindException;
           12   14    10             t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     6       7  Class com.oracle.truffle.api.instrumentation.UnwindException
           4     6      11  Class java.lang.Throwable
    Signature: (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
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
              Name  Flags
      eventChain    
      context       
      frame         
      inputBinding  
      inputContext  
      inputIndex    
      inputValue    

  private static com.oracle.truffle.api.instrumentation.UnwindException handleUnwind(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.UnwindException, com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        start local 2 // com.oracle.truffle.api.instrumentation.UnwindException ex
         0: .line 983
            aload 2 /* ex */
            aload 0 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.thrownFromBinding:(Lcom/oracle/truffle/api/instrumentation/EventBinding;)V
         1: .line 984
            aload 0 /* current */
            aload 1 /* unwind */
            aload 2 /* ex */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.mergeUnwind:(Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
            areturn
        end local 2 // com.oracle.truffle.api.instrumentation.UnwindException ex
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    2     1   unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            0    2     2       ex  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    MethodParameters:
         Name  Flags
      current  
      unwind   
      ex       

  private com.oracle.truffle.api.instrumentation.UnwindException mergeUnwind(com.oracle.truffle.api.instrumentation.UnwindException, com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        start local 2 // com.oracle.truffle.api.instrumentation.UnwindException other
         0: .line 988
            aload 1 /* unwind */
            ifnull 4
            aload 1 /* unwind */
            aload 2 /* other */
            if_acmpeq 4
         1: .line 989
            aload 0 /* this */
            sipush 4096
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         2: .line 990
            aload 1 /* unwind */
            aload 2 /* other */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.addNext:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)V
         3: .line 991
            aload 1 /* unwind */
            areturn
         4: .line 993
      StackMap locals:
      StackMap stack:
            aload 2 /* other */
            areturn
        end local 2 // com.oracle.truffle.api.instrumentation.UnwindException other
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    5     1  unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            0    5     2   other  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    MethodParameters:
        Name  Flags
      unwind  
      other   

  protected abstract void innerOnInputValue(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.EventBinding<?>, com.oracle.truffle.api.instrumentation.EventContext, int, );
    descriptor: (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
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (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
    MethodParameters:
               Name  Flags
      context        
      frame          
      targetBinding  
      inputContext   
      inputIndex     
      inputValue     

  private com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode getLast();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
         0: .line 1001
            aload 0 /* this */
            astore 1 /* current */
        start local 1 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
         1: .line 1002
            goto 3
         2: .line 1003
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
      StackMap stack:
            aload 1 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 1 /* current */
         3: .line 1002
      StackMap locals:
      StackMap stack:
            aload 1 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            ifnonnull 2
         4: .line 1005
            aload 1 /* current */
            invokestatic com.oracle.truffle.api.CompilerAsserts.partialEvaluationConstant:(Ljava/lang/Object;)V
         5: .line 1006
            aload 1 /* current */
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            1    6     1  current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()

  static void onReturnValue(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chain
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 3 // java.lang.Object result
         0: .line 1011
            aload 0 /* chain */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.getLast:()Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 4 /* current */
        start local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
         1: .line 1012
            aconst_null
            astore 5 /* unwind */
        start local 5 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         2: .line 1013
            aconst_null
            astore 6 /* prevError */
        start local 6 // java.lang.RuntimeException prevError
         3: .line 1014
            goto 14
         4: .line 1016
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.UnwindException java.lang.RuntimeException
      StackMap stack:
            aload 4 /* current */
            aload 1 /* context */
            aload 2 /* frame */
            aload 3 /* result */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.innerOnReturnValue:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
         5: .line 1017
            goto 13
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.instrumentation.UnwindException
         6: astore 7 /* ex */
        start local 7 // com.oracle.truffle.api.instrumentation.UnwindException ex
         7: .line 1018
            aload 4 /* current */
            sipush 512
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         8: .line 1019
            aload 4 /* current */
            aload 5 /* unwind */
            aload 7 /* ex */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleUnwind:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 5 /* unwind */
        end local 7 // com.oracle.truffle.api.instrumentation.UnwindException ex
         9: goto 13
        10: .line 1020
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7 /* t */
        start local 7 // java.lang.Throwable t
        11: .line 1021
            aload 4 /* current */
            iconst_2
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        12: .line 1022
            aload 4 /* current */
            aload 1 /* context */
            ldc "onInputValue"
            aload 6 /* prevError */
            aload 7 /* t */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            astore 6 /* prevError */
        end local 7 // java.lang.Throwable t
        13: .line 1024
      StackMap locals:
      StackMap stack:
            aload 4 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.previous:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 4 /* current */
        14: .line 1014
      StackMap locals:
      StackMap stack:
            aload 4 /* current */
            ifnonnull 4
        15: .line 1026
            aload 6 /* prevError */
            ifnull 17
        16: .line 1027
            aload 6 /* prevError */
            athrow
        17: .line 1030
      StackMap locals:
      StackMap stack:
            aload 5 /* unwind */
            ifnull 19
        18: .line 1031
            aload 5 /* unwind */
            athrow
        19: .line 1033
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.lang.RuntimeException prevError
        end local 5 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        end local 3 // java.lang.Object result
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chain
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0      chain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   20     1    context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   20     2      frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   20     3     result  Ljava/lang/Object;
            1   20     4    current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            2   20     5     unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            3   20     6  prevError  Ljava/lang/RuntimeException;
            7    9     7         ex  Lcom/oracle/truffle/api/instrumentation/UnwindException;
           11   13     7          t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     5       6  Class com.oracle.truffle.api.instrumentation.UnwindException
           4     5      10  Class java.lang.Throwable
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
         Name  Flags
      chain    
      context  
      frame    
      result   

  protected abstract void innerOnReturnValue(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      context  
      frame    
      result   

  static void onReturnExceptional(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chainNode
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 3 // java.lang.Throwable exception
         0: .line 1039
            aconst_null
            astore 4 /* unwind */
        start local 4 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         1: .line 1040
            aload 0 /* chainNode */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.getLast:()Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 5 /* current */
        start local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
         2: .line 1041
            aconst_null
            astore 6 /* prevError */
        start local 6 // java.lang.RuntimeException prevError
         3: .line 1042
            goto 14
         4: .line 1044
      StackMap locals: com.oracle.truffle.api.instrumentation.UnwindException com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.lang.RuntimeException
      StackMap stack:
            aload 5 /* current */
            aload 1 /* context */
            aload 2 /* frame */
            aload 3 /* exception */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.innerOnReturnExceptional:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;)V
         5: .line 1045
            goto 13
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.instrumentation.UnwindException
         6: astore 7 /* ex */
        start local 7 // com.oracle.truffle.api.instrumentation.UnwindException ex
         7: .line 1046
            aload 5 /* current */
            sipush 1024
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         8: .line 1047
            aload 5 /* current */
            aload 4 /* unwind */
            aload 7 /* ex */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleUnwind:(Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;Lcom/oracle/truffle/api/instrumentation/UnwindException;Lcom/oracle/truffle/api/instrumentation/UnwindException;)Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 4 /* unwind */
        end local 7 // com.oracle.truffle.api.instrumentation.UnwindException ex
         9: goto 13
        10: .line 1048
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7 /* t */
        start local 7 // java.lang.Throwable t
        11: .line 1049
            aload 5 /* current */
            iconst_4
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        12: .line 1050
            aload 5 /* current */
            aload 1 /* context */
            ldc "onInputValue"
            aload 6 /* prevError */
            aload 7 /* t */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            astore 6 /* prevError */
        end local 7 // java.lang.Throwable t
        13: .line 1052
      StackMap locals:
      StackMap stack:
            aload 5 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.previous:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 5 /* current */
        14: .line 1042
      StackMap locals:
      StackMap stack:
            aload 5 /* current */
            ifnonnull 4
        15: .line 1054
            aload 6 /* prevError */
            ifnull 17
        16: .line 1055
            aload 6 /* prevError */
            athrow
        17: .line 1058
      StackMap locals:
      StackMap stack:
            aload 4 /* unwind */
            ifnull 19
        18: .line 1059
            aload 4 /* unwind */
            athrow
        19: .line 1061
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.lang.RuntimeException prevError
        end local 5 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        end local 4 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 3 // java.lang.Throwable exception
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode chainNode
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0  chainNode  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   20     1    context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   20     2      frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   20     3  exception  Ljava/lang/Throwable;
            1   20     4     unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            2   20     5    current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            3   20     6  prevError  Ljava/lang/RuntimeException;
            7    9     7         ex  Lcom/oracle/truffle/api/instrumentation/UnwindException;
           11   13     7          t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     5       6  Class com.oracle.truffle.api.instrumentation.UnwindException
           4     5      10  Class java.lang.Throwable
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
           Name  Flags
      chainNode  
      context    
      frame      
      exception  

  protected abstract void innerOnReturnExceptional(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Throwable;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
           Name  Flags
      context    
      frame      
      exception  

  private boolean containsBinding(com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/UnwindException;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         0: .line 1066
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getBinding:()Lcom/oracle/truffle/api/instrumentation/EventBinding;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            if_acmpne 2
         1: .line 1067
            iconst_1
            ireturn
         2: .line 1069
      StackMap locals:
      StackMap stack:
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getNext:()Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 2 /* nextUnwind */
        start local 2 // com.oracle.truffle.api.instrumentation.UnwindException nextUnwind
         3: .line 1070
            aload 2 /* nextUnwind */
            ifnull 6
         4: .line 1071
            aload 0 /* this */
            sipush 4096
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         5: .line 1072
            aload 0 /* this */
            aload 2 /* nextUnwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.containsBindingBoundary:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)Z
            ireturn
         6: .line 1074
      StackMap locals: com.oracle.truffle.api.instrumentation.UnwindException
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.truffle.api.instrumentation.UnwindException nextUnwind
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    7     1      unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            3    7     2  nextUnwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    MethodParameters:
        Name  Flags
      unwind  

  private boolean containsBindingBoundary(com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/UnwindException;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         0: .line 1081
            aload 0 /* this */
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.containsBinding:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)Z
            ireturn
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    1     1  unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      unwind  

  private java.lang.Object getInfo(com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/UnwindException;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         0: .line 1085
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getBinding:()Lcom/oracle/truffle/api/instrumentation/EventBinding;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            if_acmpne 2
         1: .line 1086
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getInfo:()Ljava/lang/Object;
            areturn
         2: .line 1088
      StackMap locals:
      StackMap stack:
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getNext:()Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 2 /* nextUnwind */
        start local 2 // com.oracle.truffle.api.instrumentation.UnwindException nextUnwind
         3: .line 1089
            aload 2 /* nextUnwind */
            ifnull 6
         4: .line 1090
            aload 0 /* this */
            sipush 4096
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         5: .line 1091
            aload 0 /* this */
            aload 2 /* nextUnwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.getInfoBoundary:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)Ljava/lang/Object;
            areturn
         6: .line 1093
      StackMap locals: com.oracle.truffle.api.instrumentation.UnwindException
      StackMap stack:
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 2 // com.oracle.truffle.api.instrumentation.UnwindException nextUnwind
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    7     1      unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            3    7     2  nextUnwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    MethodParameters:
        Name  Flags
      unwind  

  private java.lang.Object getInfoBoundary(com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/UnwindException;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         0: .line 1100
            aload 0 /* this */
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.getInfo:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)Ljava/lang/Object;
            areturn
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    1     1  unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      unwind  

  private void reset(com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/UnwindException;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         0: .line 1104
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getBinding:()Lcom/oracle/truffle/api/instrumentation/EventBinding;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            if_acmpne 3
         1: .line 1105
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.resetThread:()V
         2: .line 1106
            goto 7
         3: .line 1107
      StackMap locals:
      StackMap stack:
            aload 1 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.getNext:()Lcom/oracle/truffle/api/instrumentation/UnwindException;
            astore 2 /* nextUnwind */
        start local 2 // com.oracle.truffle.api.instrumentation.UnwindException nextUnwind
         4: .line 1108
            aload 2 /* nextUnwind */
            ifnull 7
         5: .line 1109
            aload 0 /* this */
            sipush 4096
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
         6: .line 1110
            aload 1 /* unwind */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            invokevirtual com.oracle.truffle.api.instrumentation.UnwindException.resetBoundary:(Lcom/oracle/truffle/api/instrumentation/EventBinding;)V
        end local 2 // com.oracle.truffle.api.instrumentation.UnwindException nextUnwind
         7: .line 1113
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    8     1      unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            4    7     2  nextUnwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
    MethodParameters:
        Name  Flags
      unwind  

  static java.lang.Object onUnwind(com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode, com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, com.oracle.truffle.api.instrumentation.UnwindException);
    descriptor: (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;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        start local 3 // com.oracle.truffle.api.instrumentation.UnwindException unwind
         0: .line 1117
            aload 0 /* eventChain */
            astore 4 /* current */
        start local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
         1: .line 1118
            aconst_null
            astore 5 /* prevError */
        start local 5 // java.lang.RuntimeException prevError
         2: .line 1119
            aconst_null
            astore 6 /* ret */
        start local 6 // java.lang.Object ret
         3: .line 1120
            goto 21
         4: .line 1121
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.lang.RuntimeException java.lang.Object
      StackMap stack:
            aconst_null
            astore 7 /* nextRet */
        start local 7 // java.lang.Object nextRet
         5: .line 1122
            aload 4 /* current */
            aload 3 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.containsBinding:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)Z
            ifeq 15
         6: .line 1124
            aload 4 /* current */
            aload 1 /* context */
            aload 2 /* frame */
            aload 4 /* current */
            aload 3 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.getInfo:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)Ljava/lang/Object;
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.innerOnUnwind:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* nextRet */
         7: .line 1125
            goto 11
      StackMap locals: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode com.oracle.truffle.api.instrumentation.EventContext com.oracle.truffle.api.frame.VirtualFrame com.oracle.truffle.api.instrumentation.UnwindException com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode java.lang.RuntimeException java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
         8: astore 8 /* t */
        start local 8 // java.lang.Throwable t
         9: .line 1126
            aload 4 /* current */
            bipush 16
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.profileBranch:(I)V
        10: .line 1127
            aload 4 /* current */
            aload 1 /* context */
            ldc "onUnwind"
            aload 5 /* prevError */
            aload 8 /* t */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.handleError:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;Ljava/lang/RuntimeException;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            astore 5 /* prevError */
        end local 8 // java.lang.Throwable t
        11: .line 1129
      StackMap locals:
      StackMap stack:
            aload 7 /* nextRet */
            ifnull 16
        12: .line 1130
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.$assertionsDisabled:Z
            ifne 13
            aload 7 /* nextRet */
            aload 4 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.checkInteropType:(Ljava/lang/Object;Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        13: .line 1131
      StackMap locals:
      StackMap stack:
            aload 4 /* current */
            aload 3 /* unwind */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.reset:(Lcom/oracle/truffle/api/instrumentation/UnwindException;)V
        14: .line 1133
            goto 16
        15: .line 1134
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode.UNWIND_ACTION_IGNORED:Ljava/lang/Object;
            astore 7 /* nextRet */
        16: .line 1136
      StackMap locals:
      StackMap stack:
            aload 4 /* current */
            aload 0 /* eventChain */
            if_acmpne 19
        17: .line 1138
            aload 7 /* nextRet */
            astore 6 /* ret */
        18: .line 1139
            goto 20
        19: .line 1140
      StackMap locals:
      StackMap stack:
            aload 6 /* ret */
            aload 7 /* nextRet */
            invokestatic com.oracle.truffle.api.instrumentation.ProbeNode.mergePostUnwindReturns:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* ret */
        20: .line 1142
      StackMap locals:
      StackMap stack:
            aload 4 /* current */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            astore 4 /* current */
        end local 7 // java.lang.Object nextRet
        21: .line 1120
      StackMap locals:
      StackMap stack:
            aload 4 /* current */
            ifnonnull 4
        22: .line 1144
            aload 5 /* prevError */
            ifnull 24
        23: .line 1145
            aload 5 /* prevError */
            athrow
        24: .line 1148
      StackMap locals:
      StackMap stack:
            aload 6 /* ret */
            areturn
        end local 6 // java.lang.Object ret
        end local 5 // java.lang.RuntimeException prevError
        end local 4 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode current
        end local 3 // com.oracle.truffle.api.instrumentation.UnwindException unwind
        end local 2 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode eventChain
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   25     0  eventChain  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0   25     1     context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   25     2       frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
            0   25     3      unwind  Lcom/oracle/truffle/api/instrumentation/UnwindException;
            1   25     4     current  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            2   25     5   prevError  Ljava/lang/RuntimeException;
            3   25     6         ret  Ljava/lang/Object;
            5   21     7     nextRet  Ljava/lang/Object;
            9   11     8           t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.Throwable
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
            Name  Flags
      eventChain  
      context     
      frame       
      unwind      

  protected abstract java.lang.Object innerOnUnwind(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.frame.VirtualFrame, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/frame/VirtualFrame;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      context  
      frame    
      info     

  com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode find(com.oracle.truffle.api.instrumentation.EventBinding<?>);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
        start local 1 // com.oracle.truffle.api.instrumentation.EventBinding b
         0: .line 1154
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding$Source;
            aload 1 /* b */
            if_acmpne 3
         1: .line 1155
            getstatic com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            ifnull 2
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            aload 1 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.find:(Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            ifnull 2
            new java.lang.AssertionError
            dup
            ldc "only one chain entry per binding allowed"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 1156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
         3: .line 1158
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            ifnull 4
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.next:Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            aload 1 /* b */
            invokevirtual com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode.find:(Lcom/oracle/truffle/api/instrumentation/EventBinding;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            goto 5
      StackMap locals:
      StackMap stack:
         4: aconst_null
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode
         5: areturn
        end local 1 // com.oracle.truffle.api.instrumentation.EventBinding b
        end local 0 // com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
            0    6     1     b  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
    Signature: (Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;)Lcom/oracle/truffle/api/instrumentation/ProbeNode$EventChainNode;
    MethodParameters:
      Name  Flags
      b     
}
SourceFile: "ProbeNode.java"
NestHost: com.oracle.truffle.api.instrumentation.ProbeNode
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
  final Source = com.oracle.truffle.api.instrumentation.EventBinding$Source of com.oracle.truffle.api.instrumentation.EventBinding
  abstract EventChainNode = com.oracle.truffle.api.instrumentation.ProbeNode$EventChainNode of com.oracle.truffle.api.instrumentation.ProbeNode
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node