final class com.oracle.truffle.api.debug.BreakpointExceptionFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.debug.BreakpointExceptionFilter
  super_class: java.lang.Object
{
  private com.oracle.truffle.api.debug.Debugger debugger;
    descriptor: Lcom/oracle/truffle/api/debug/Debugger;
    flags: (0x0002) ACC_PRIVATE

  final boolean caught;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  final boolean uncaught;
    descriptor: Z
    flags: (0x0010) ACC_FINAL

  private final com.oracle.truffle.api.debug.DebuggerSession$StableBoolean haveReportedExceptions;
    descriptor: Lcom/oracle/truffle/api/debug/DebuggerSession$StableBoolean;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.Throwable> reportedExceptions;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/Throwable;>;

  private final java.lang.ThreadLocal<java.lang.Throwable> exceptionsOnThreads;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Ljava/lang/Throwable;>;

  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 62
            ldc Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            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.debug.BreakpointExceptionFilter.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
        start local 1 // boolean caught
        start local 2 // boolean uncaught
         0: .line 71
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 67
            aload 0 /* this */
            new com.oracle.truffle.api.debug.DebuggerSession$StableBoolean
            dup
            iconst_0
            invokespecial com.oracle.truffle.api.debug.DebuggerSession$StableBoolean.<init>:(Z)V
            putfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.haveReportedExceptions:Lcom/oracle/truffle/api/debug/DebuggerSession$StableBoolean;
         2: .line 68
            aload 0 /* this */
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
            putfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.reportedExceptions:Ljava/util/Set;
         3: .line 69
            aload 0 /* this */
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.exceptionsOnThreads:Ljava/lang/ThreadLocal;
         4: .line 72
            aload 0 /* this */
            iload 1 /* caught */
            putfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.caught:Z
         5: .line 73
            aload 0 /* this */
            iload 2 /* uncaught */
            putfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.uncaught:Z
         6: .line 74
            return
        end local 2 // boolean uncaught
        end local 1 // boolean caught
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            0    7     1    caught  Z
            0    7     2  uncaught  Z
    MethodParameters:
          Name  Flags
      caught    
      uncaught  

  void setDebugger(com.oracle.truffle.api.debug.Debugger);
    descriptor: (Lcom/oracle/truffle/api/debug/Debugger;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
        start local 1 // com.oracle.truffle.api.debug.Debugger debugger
         0: .line 77
            getstatic com.oracle.truffle.api.debug.BreakpointExceptionFilter.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            ifnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* debugger */
            putfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.debugger:Lcom/oracle/truffle/api/debug/Debugger;
         2: .line 79
            return
        end local 1 // com.oracle.truffle.api.debug.Debugger debugger
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            0    3     1  debugger  Lcom/oracle/truffle/api/debug/Debugger;
    MethodParameters:
          Name  Flags
      debugger  

  com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match matchException(com.oracle.truffle.api.nodes.Node, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
        start local 1 // com.oracle.truffle.api.nodes.Node throwNode
        start local 2 // java.lang.Throwable exception
         0: .line 82
            aload 0 /* this */
            aload 2 /* exception */
            invokevirtual com.oracle.truffle.api.debug.BreakpointExceptionFilter.wasReported:(Ljava/lang/Throwable;)Z
            ifeq 2
         1: .line 83
            getstatic com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match.UNMATCHED:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
            areturn
         2: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.caught:Z
            ifeq 4
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.uncaught:Z
            ifeq 4
         3: .line 86
            getstatic com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match.MATCHED:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
            areturn
         4: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* throwNode */
            aload 2 /* exception */
            invokevirtual com.oracle.truffle.api.debug.BreakpointExceptionFilter.testExceptionCaught:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
            areturn
        end local 2 // java.lang.Throwable exception
        end local 1 // com.oracle.truffle.api.nodes.Node throwNode
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            0    5     1  throwNode  Lcom/oracle/truffle/api/nodes/Node;
            0    5     2  exception  Ljava/lang/Throwable;
    MethodParameters:
           Name  Flags
      throwNode  
      exception  

  private com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match testExceptionCaught(com.oracle.truffle.api.nodes.Node, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
        start local 1 // com.oracle.truffle.api.nodes.Node throwNode
        start local 2 // java.lang.Throwable exception
         0: .line 94
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getUncached:()Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 2 /* exception */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isException:(Ljava/lang/Object;)Z
            ifne 4
         1: .line 95
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.uncaught:Z
            ifeq 2
            getstatic com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match.MATCHED:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
            goto 3
      StackMap locals:
      StackMap stack:
         2: getstatic com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match.UNMATCHED:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match
         3: areturn
         4: .line 97
      StackMap locals:
      StackMap stack:
            aload 1 /* throwNode */
            aload 2 /* exception */
            invokestatic com.oracle.truffle.api.debug.BreakpointExceptionFilter.getCatchNode:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/debug/DebugException$CatchLocation;
            astore 3 /* catchLocation */
        start local 3 // com.oracle.truffle.api.debug.DebugException$CatchLocation catchLocation
         5: .line 98
            aload 3 /* catchLocation */
            ifnull 6
            iconst_1
            goto 7
      StackMap locals: com.oracle.truffle.api.debug.DebugException$CatchLocation
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 4 /* exceptionCaught */
        start local 4 // boolean exceptionCaught
         8: .line 99
            new com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.caught:Z
            ifeq 9
            iload 4 /* exceptionCaught */
            ifne 11
      StackMap locals: com.oracle.truffle.api.debug.BreakpointExceptionFilter com.oracle.truffle.api.nodes.Node java.lang.Throwable com.oracle.truffle.api.debug.DebugException$CatchLocation int
      StackMap stack: new 8 new 8
         9: aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.uncaught:Z
            ifeq 10
            iload 4 /* exceptionCaught */
            ifeq 11
      StackMap locals: com.oracle.truffle.api.debug.BreakpointExceptionFilter com.oracle.truffle.api.nodes.Node java.lang.Throwable com.oracle.truffle.api.debug.DebugException$CatchLocation int
      StackMap stack: new 8 new 8
        10: iconst_0
            goto 12
      StackMap locals: com.oracle.truffle.api.debug.BreakpointExceptionFilter com.oracle.truffle.api.nodes.Node java.lang.Throwable com.oracle.truffle.api.debug.DebugException$CatchLocation int
      StackMap stack: new 8 new 8
        11: iconst_1
      StackMap locals: com.oracle.truffle.api.debug.BreakpointExceptionFilter com.oracle.truffle.api.nodes.Node java.lang.Throwable com.oracle.truffle.api.debug.DebugException$CatchLocation int
      StackMap stack: new 8 new 8 int
        12: aload 3 /* catchLocation */
            invokespecial com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match.<init>:(ZLcom/oracle/truffle/api/debug/DebugException$CatchLocation;)V
            areturn
        end local 4 // boolean exceptionCaught
        end local 3 // com.oracle.truffle.api.debug.DebugException$CatchLocation catchLocation
        end local 2 // java.lang.Throwable exception
        end local 1 // com.oracle.truffle.api.nodes.Node throwNode
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            0   13     1        throwNode  Lcom/oracle/truffle/api/nodes/Node;
            0   13     2        exception  Ljava/lang/Throwable;
            5   13     3    catchLocation  Lcom/oracle/truffle/api/debug/DebugException$CatchLocation;
            8   13     4  exceptionCaught  Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      throwNode  
      exception  

  static com.oracle.truffle.api.debug.DebugException$CatchLocation getCatchNode(com.oracle.truffle.api.nodes.Node, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/debug/DebugException$CatchLocation;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.nodes.Node throwNode
        start local 1 // java.lang.Throwable exception
         0: .line 103
            iconst_1
            anewarray com.oracle.truffle.api.debug.DebugException$CatchLocation
            astore 2 /* catchLocationPtr */
        start local 2 // com.oracle.truffle.api.debug.DebugException$CatchLocation[] catchLocationPtr
         1: .line 104
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new com.oracle.truffle.api.debug.BreakpointExceptionFilter$1
            dup
            aload 0 /* throwNode */
            aload 1 /* exception */
            aload 2 /* catchLocationPtr */
            invokespecial com.oracle.truffle.api.debug.BreakpointExceptionFilter$1.<init>:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;[Lcom/oracle/truffle/api/debug/DebugException$CatchLocation;)V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.iterateFrames:(Lcom/oracle/truffle/api/frame/FrameInstanceVisitor;)Ljava/lang/Object;
            pop
         2: .line 126
            aload 2 /* catchLocationPtr */
            iconst_0
            aaload
            areturn
        end local 2 // com.oracle.truffle.api.debug.DebugException$CatchLocation[] catchLocationPtr
        end local 1 // java.lang.Throwable exception
        end local 0 // com.oracle.truffle.api.nodes.Node throwNode
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0         throwNode  Lcom/oracle/truffle/api/nodes/Node;
            0    3     1         exception  Ljava/lang/Throwable;
            1    3     2  catchLocationPtr  [Lcom/oracle/truffle/api/debug/DebugException$CatchLocation;
    MethodParameters:
           Name  Flags
      throwNode  
      exception  

  private static com.oracle.truffle.api.nodes.Node getCatchNodeImpl(com.oracle.truffle.api.nodes.Node, java.lang.Throwable);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/nodes/Node;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=8, args_size=2
        start local 0 // com.oracle.truffle.api.nodes.Node node
        start local 1 // java.lang.Throwable exception
         0: .line 131
            aload 0 /* node */
            instanceof com.oracle.truffle.api.instrumentation.InstrumentableNode
            ifeq 19
         1: .line 132
            aload 0 /* node */
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode
            astore 2 /* inode */
        start local 2 // com.oracle.truffle.api.instrumentation.InstrumentableNode inode
         2: .line 133
            aload 2 /* inode */
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.isInstrumentable:()Z
            ifeq 19
            aload 2 /* inode */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$TryBlockTag;
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 19
         3: .line 134
            aload 1 /* exception */
            checkcast com.oracle.truffle.api.TruffleException
            invokeinterface com.oracle.truffle.api.TruffleException.getExceptionObject:()Ljava/lang/Object;
            astore 3 /* exceptionObject */
        start local 3 // java.lang.Object exceptionObject
         4: .line 135
            aload 2 /* inode */
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.getNodeObject:()Ljava/lang/Object;
            astore 4 /* nodeObject */
        start local 4 // java.lang.Object nodeObject
         5: .line 136
            aload 4 /* nodeObject */
            ifnull 18
            aload 3 /* exceptionObject */
            ifnull 18
         6: .line 137
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 4 /* nodeObject */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            astore 5 /* library */
        start local 5 // com.oracle.truffle.api.interop.InteropLibrary library
         7: .line 138
            aload 4 /* nodeObject */
            checkcast com.oracle.truffle.api.interop.TruffleObject
            astore 6 /* object */
        start local 6 // com.oracle.truffle.api.interop.TruffleObject object
         8: .line 139
            aload 5 /* library */
            aload 4 /* nodeObject */
            ldc "catches"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberInvocable:(Ljava/lang/Object;Ljava/lang/String;)Z
            ifeq 17
         9: .line 142
            aload 5 /* library */
            aload 4 /* nodeObject */
            ldc "catches"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* exceptionObject */
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.invokeMember:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* catches */
        start local 7 // java.lang.Object catches
        10: .line 143
            goto 13
        end local 7 // java.lang.Object catches
      StackMap locals: com.oracle.truffle.api.nodes.Node java.lang.Throwable com.oracle.truffle.api.instrumentation.InstrumentableNode java.lang.Object java.lang.Object com.oracle.truffle.api.interop.InteropLibrary com.oracle.truffle.api.interop.TruffleObject
      StackMap stack: com.oracle.truffle.api.interop.InteropException
        11: pop
        12: .line 144
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected exception from 'catches' on '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* object */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* exception */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        start local 7 // java.lang.Object catches
        13: .line 146
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 7 /* catches */
            instanceof java.lang.Boolean
            ifne 15
        14: .line 147
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unexpected return value from 'catches' on '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* object */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "' : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* catches */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 149
      StackMap locals:
      StackMap stack:
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            aload 7 /* catches */
            invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
            ifeq 19
        16: .line 150
            aload 0 /* node */
            areturn
        end local 7 // java.lang.Object catches
        17: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* node */
            areturn
        end local 6 // com.oracle.truffle.api.interop.TruffleObject object
        end local 5 // com.oracle.truffle.api.interop.InteropLibrary library
        18: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* node */
            areturn
        end local 4 // java.lang.Object nodeObject
        end local 3 // java.lang.Object exceptionObject
        end local 2 // com.oracle.truffle.api.instrumentation.InstrumentableNode inode
        19: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getParent:()Lcom/oracle/truffle/api/nodes/Node;
            astore 2 /* parent */
        start local 2 // com.oracle.truffle.api.nodes.Node parent
        20: .line 161
            aload 2 /* parent */
            ifnull 22
        21: .line 162
            aload 2 /* parent */
            aload 1 /* exception */
            invokestatic com.oracle.truffle.api.debug.BreakpointExceptionFilter.getCatchNodeImpl:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/nodes/Node;
            areturn
        22: .line 164
      StackMap locals: com.oracle.truffle.api.nodes.Node
      StackMap stack:
            aconst_null
            areturn
        end local 2 // com.oracle.truffle.api.nodes.Node parent
        end local 1 // java.lang.Throwable exception
        end local 0 // com.oracle.truffle.api.nodes.Node node
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   23     0             node  Lcom/oracle/truffle/api/nodes/Node;
            0   23     1        exception  Ljava/lang/Throwable;
            2   19     2            inode  Lcom/oracle/truffle/api/instrumentation/InstrumentableNode;
            4   19     3  exceptionObject  Ljava/lang/Object;
            5   19     4       nodeObject  Ljava/lang/Object;
            7   18     5          library  Lcom/oracle/truffle/api/interop/InteropLibrary;
            8   18     6           object  Lcom/oracle/truffle/api/interop/TruffleObject;
           10   11     7          catches  Ljava/lang/Object;
           13   17     7          catches  Ljava/lang/Object;
           20   23     2           parent  Lcom/oracle/truffle/api/nodes/Node;
      Exception table:
        from    to  target  type
           9    10      11  Class com.oracle.truffle.api.interop.UnsupportedTypeException
           9    10      11  Class com.oracle.truffle.api.interop.ArityException
           9    10      11  Class com.oracle.truffle.api.interop.UnknownIdentifierException
           9    10      11  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    MethodParameters:
           Name  Flags
      node       
      exception  

  private boolean wasReported(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
        start local 1 // java.lang.Throwable exception
         0: .line 169
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 170
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.reportedExceptions:Ljava/util/Set;
            aload 1 /* exception */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            istore 3 /* reported */
        start local 3 // boolean reported
         2: .line 171
            iload 3 /* reported */
            ifne 4
         3: .line 172
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.reportedExceptions:Ljava/util/Set;
            aload 1 /* exception */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 174
      StackMap locals: com.oracle.truffle.api.debug.BreakpointExceptionFilter int
      StackMap stack:
            iload 3 /* reported */
            aload 2
            monitorexit
         5: ireturn
        end local 3 // boolean reported
         6: .line 169
      StackMap locals: com.oracle.truffle.api.debug.BreakpointExceptionFilter java.lang.Throwable com.oracle.truffle.api.debug.BreakpointExceptionFilter
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
         7: athrow
        end local 1 // java.lang.Throwable exception
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            0    8     1  exception  Ljava/lang/Throwable;
            2    6     3   reported  Z
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      exception  

  void resetReportedException();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
         0: .line 179
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.haveReportedExceptions:Lcom/oracle/truffle/api/debug/DebuggerSession$StableBoolean;
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession$StableBoolean.get:()Z
            ifeq 2
         1: .line 180
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.BreakpointExceptionFilter.doResetReportedException:()V
         2: .line 182
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;

  private void doResetReportedException();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
         0: .line 186
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.exceptionsOnThreads:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast java.lang.Throwable
            astore 1 /* exception */
        start local 1 // java.lang.Throwable exception
         1: .line 187
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         2: .line 188
            aload 1 /* exception */
            ifnull 5
         3: .line 189
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.exceptionsOnThreads:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.remove:()V
         4: .line 190
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.reportedExceptions:Ljava/util/Set;
            aload 1 /* exception */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         5: .line 192
      StackMap locals: java.lang.Throwable com.oracle.truffle.api.debug.BreakpointExceptionFilter
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.reportedExceptions:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 7
         6: .line 193
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter.haveReportedExceptions:Lcom/oracle/truffle/api/debug/DebuggerSession$StableBoolean;
            iconst_0
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession$StableBoolean.set:(Z)V
         7: .line 187
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 196
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Throwable exception
        end local 0 // com.oracle.truffle.api.debug.BreakpointExceptionFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            1   12     1  exception  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     8       9  any
           9    10       9  any
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
}
SourceFile: "BreakpointExceptionFilter.java"
NestMembers:
  com.oracle.truffle.api.debug.BreakpointExceptionFilter$1  com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  com.oracle.truffle.api.debug.BreakpointExceptionFilter$1
  final Match = com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match of com.oracle.truffle.api.debug.BreakpointExceptionFilter
  public final CatchLocation = com.oracle.truffle.api.debug.DebugException$CatchLocation of com.oracle.truffle.api.debug.DebugException
  final StableBoolean = com.oracle.truffle.api.debug.DebuggerSession$StableBoolean of com.oracle.truffle.api.debug.DebuggerSession
  public final TryBlockTag = com.oracle.truffle.api.instrumentation.StandardTags$TryBlockTag of com.oracle.truffle.api.instrumentation.StandardTags