public class com.oracle.truffle.api.debug.Breakpoint
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.debug.Breakpoint
  super_class: java.lang.Object
{
  private static final com.oracle.truffle.api.debug.Breakpoint BUILDER_INSTANCE;
    descriptor: Lcom/oracle/truffle/api/debug/Breakpoint;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.function.BinaryOperator<com.oracle.truffle.api.source.Source> RESOLVED_LOCATION_ACCUMULATOR;
    descriptor: Ljava/util/function/BinaryOperator;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/BinaryOperator<Lcom/oracle/truffle/api/source/Source;>;

  private static final com.oracle.truffle.api.source.Source NO_SOURCE;
    descriptor: Lcom/oracle/truffle/api/source/Source;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.oracle.truffle.api.debug.SuspendAnchor suspendAnchor;
    descriptor: Lcom/oracle/truffle/api/debug/SuspendAnchor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.debug.BreakpointLocation locationKey;
    descriptor: Lcom/oracle/truffle/api/debug/BreakpointLocation;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean oneShot;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.debug.BreakpointExceptionFilter exceptionFilter;
    descriptor: Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.ref.Reference<java.lang.Object> rootInstanceRef;
    descriptor: Ljava/lang/ref/Reference;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/ref/Reference<Ljava/lang/Object;>;

  private final com.oracle.truffle.api.debug.Breakpoint$ResolveListener resolveListener;
    descriptor: Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile com.oracle.truffle.api.debug.Debugger debugger;
    descriptor: Lcom/oracle/truffle/api/debug/Debugger;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

  private volatile com.oracle.truffle.api.Assumption sessionsUnchanged;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean enabled;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean resolved;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int ignoreCount;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean disposed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.lang.String condition;
    descriptor: Ljava/lang/String;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean global;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint roWrapper;
    descriptor: Lcom/oracle/truffle/api/debug/Breakpoint$GlobalBreakpoint;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final java.util.concurrent.atomic.AtomicLong hitCount;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile com.oracle.truffle.api.Assumption conditionUnchanged;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.oracle.truffle.api.Assumption conditionExistsUnchanged;
    descriptor: Lcom/oracle/truffle/api/Assumption;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile com.oracle.truffle.api.instrumentation.EventBinding<? extends com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory> breakpointBinding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<+Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;

  private final java.util.concurrent.atomic.AtomicBoolean breakpointBindingAttaching;
    descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile boolean breakpointBindingReady;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.util.function.Predicate<com.oracle.truffle.api.source.Source> sourcePredicate;
    descriptor: Ljava/util/function/Predicate;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/function/Predicate<Lcom/oracle/truffle/api/source/Source;>;

  private final java.util.concurrent.atomic.AtomicReference<com.oracle.truffle.api.instrumentation.EventBinding<?>> sourceBinding;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;>;

  private java.util.concurrent.atomic.AtomicReference<com.oracle.truffle.api.source.Source> resolvedSourceInAttach;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/oracle/truffle/api/source/Source;>;

  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=3, locals=0, args_size=0
         0: .line 130
            ldc Lcom/oracle/truffle/api/debug/Breakpoint;
            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.Breakpoint.$assertionsDisabled:Z
         3: .line 170
            new com.oracle.truffle.api.debug.Breakpoint
            dup
            invokespecial com.oracle.truffle.api.debug.Breakpoint.<init>:()V
            putstatic com.oracle.truffle.api.debug.Breakpoint.BUILDER_INSTANCE:Lcom/oracle/truffle/api/debug/Breakpoint;
         4: .line 171
            new com.oracle.truffle.api.debug.Breakpoint$ResolvedLocationOperator
            dup
            invokespecial com.oracle.truffle.api.debug.Breakpoint$ResolvedLocationOperator.<init>:()V
            putstatic com.oracle.truffle.api.debug.Breakpoint.RESOLVED_LOCATION_ACCUMULATOR:Ljava/util/function/BinaryOperator;
         5: .line 172
            ldc "N/A"
            ldc ""
            ldc ""
            invokestatic com.oracle.truffle.api.source.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/oracle/truffle/api/source/Source$LiteralBuilder;
            invokevirtual com.oracle.truffle.api.source.Source$LiteralBuilder.build:()Lcom/oracle/truffle/api/source/Source;
            putstatic com.oracle.truffle.api.debug.Breakpoint.NO_SOURCE:Lcom/oracle/truffle/api/source/Source;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.oracle.truffle.api.debug.BreakpointLocation, com.oracle.truffle.api.debug.SuspendAnchor);
    descriptor: (Lcom/oracle/truffle/api/debug/BreakpointLocation;Lcom/oracle/truffle/api/debug/SuspendAnchor;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.debug.BreakpointLocation key
        start local 2 // com.oracle.truffle.api.debug.SuspendAnchor suspendAnchor
         0: .line 206
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* suspendAnchor */
            iconst_0
            aconst_null
            aconst_null
            aconst_null
            invokespecial com.oracle.truffle.api.debug.Breakpoint.<init>:(Lcom/oracle/truffle/api/debug/BreakpointLocation;Lcom/oracle/truffle/api/debug/SuspendAnchor;ZLcom/oracle/truffle/api/debug/BreakpointExceptionFilter;Ljava/lang/Object;Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;)V
         1: .line 207
            return
        end local 2 // com.oracle.truffle.api.debug.SuspendAnchor suspendAnchor
        end local 1 // com.oracle.truffle.api.debug.BreakpointLocation key
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    2     1            key  Lcom/oracle/truffle/api/debug/BreakpointLocation;
            0    2     2  suspendAnchor  Lcom/oracle/truffle/api/debug/SuspendAnchor;
    MethodParameters:
               Name  Flags
      key            
      suspendAnchor  

  private void <init>(com.oracle.truffle.api.debug.BreakpointLocation, com.oracle.truffle.api.debug.SuspendAnchor, boolean, com.oracle.truffle.api.debug.BreakpointExceptionFilter, java.lang.Object, com.oracle.truffle.api.debug.Breakpoint$ResolveListener);
    descriptor: (Lcom/oracle/truffle/api/debug/BreakpointLocation;Lcom/oracle/truffle/api/debug/SuspendAnchor;ZLcom/oracle/truffle/api/debug/BreakpointExceptionFilter;Ljava/lang/Object;Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=7
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.debug.BreakpointLocation key
        start local 2 // com.oracle.truffle.api.debug.SuspendAnchor suspendAnchor
        start local 3 // boolean oneShot
        start local 4 // com.oracle.truffle.api.debug.BreakpointExceptionFilter exceptionFilter
        start local 5 // java.lang.Object rootInstance
        start local 6 // com.oracle.truffle.api.debug.Breakpoint$ResolveListener resolveListener
         0: .line 209
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 182
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
         2: .line 194
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.hitCount:Ljava/util/concurrent/atomic/AtomicLong;
         3: .line 199
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingAttaching:Ljava/util/concurrent/atomic/AtomicBoolean;
         4: .line 202
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.sourceBinding:Ljava/util/concurrent/atomic/AtomicReference;
         5: .line 203
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.resolvedSourceInAttach:Ljava/util/concurrent/atomic/AtomicReference;
         6: .line 212
            aload 0 /* this */
            aload 1 /* key */
            putfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
         7: .line 213
            aload 0 /* this */
            aload 2 /* suspendAnchor */
            putfield com.oracle.truffle.api.debug.Breakpoint.suspendAnchor:Lcom/oracle/truffle/api/debug/SuspendAnchor;
         8: .line 214
            aload 0 /* this */
            iload 3 /* oneShot */
            putfield com.oracle.truffle.api.debug.Breakpoint.oneShot:Z
         9: .line 215
            aload 0 /* this */
            aload 4 /* exceptionFilter */
            putfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
        10: .line 216
            aload 0 /* this */
            aload 5 /* rootInstance */
            ifnull 11
            new java.lang.ref.WeakReference
            dup
            aload 5 /* rootInstance */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            goto 12
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.debug.BreakpointLocation com.oracle.truffle.api.debug.SuspendAnchor int com.oracle.truffle.api.debug.BreakpointExceptionFilter java.lang.Object com.oracle.truffle.api.debug.Breakpoint$ResolveListener
      StackMap stack: com.oracle.truffle.api.debug.Breakpoint
        11: aconst_null
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.debug.BreakpointLocation com.oracle.truffle.api.debug.SuspendAnchor int com.oracle.truffle.api.debug.BreakpointExceptionFilter java.lang.Object com.oracle.truffle.api.debug.Breakpoint$ResolveListener
      StackMap stack: com.oracle.truffle.api.debug.Breakpoint java.lang.ref.WeakReference
        12: putfield com.oracle.truffle.api.debug.Breakpoint.rootInstanceRef:Ljava/lang/ref/Reference;
        13: .line 217
            aload 0 /* this */
            aload 6 /* resolveListener */
            putfield com.oracle.truffle.api.debug.Breakpoint.resolveListener:Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;
        14: .line 218
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.enabled:Z
        15: .line 219
            return
        end local 6 // com.oracle.truffle.api.debug.Breakpoint$ResolveListener resolveListener
        end local 5 // java.lang.Object rootInstance
        end local 4 // com.oracle.truffle.api.debug.BreakpointExceptionFilter exceptionFilter
        end local 3 // boolean oneShot
        end local 2 // com.oracle.truffle.api.debug.SuspendAnchor suspendAnchor
        end local 1 // com.oracle.truffle.api.debug.BreakpointLocation key
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   16     0             this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   16     1              key  Lcom/oracle/truffle/api/debug/BreakpointLocation;
            0   16     2    suspendAnchor  Lcom/oracle/truffle/api/debug/SuspendAnchor;
            0   16     3          oneShot  Z
            0   16     4  exceptionFilter  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            0   16     5     rootInstance  Ljava/lang/Object;
            0   16     6  resolveListener  Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;
    MethodParameters:
                 Name  Flags
      key              
      suspendAnchor    
      oneShot          
      exceptionFilter  
      rootInstance     
      resolveListener  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 221
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 182
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
         2: .line 194
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.hitCount:Ljava/util/concurrent/atomic/AtomicLong;
         3: .line 199
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingAttaching:Ljava/util/concurrent/atomic/AtomicBoolean;
         4: .line 202
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.sourceBinding:Ljava/util/concurrent/atomic/AtomicReference;
         5: .line 203
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
            putfield com.oracle.truffle.api.debug.Breakpoint.resolvedSourceInAttach:Ljava/util/concurrent/atomic/AtomicReference;
         6: .line 222
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
         7: .line 223
            aload 0 /* this */
            getstatic com.oracle.truffle.api.debug.SuspendAnchor.BEFORE:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            putfield com.oracle.truffle.api.debug.Breakpoint.suspendAnchor:Lcom/oracle/truffle/api/debug/SuspendAnchor;
         8: .line 224
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.debug.Breakpoint.oneShot:Z
         9: .line 225
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
        10: .line 226
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.rootInstanceRef:Ljava/lang/ref/Reference;
        11: .line 227
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.resolveListener:Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;
        12: .line 228
            return
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public com.oracle.truffle.api.debug.Breakpoint$Kind getKind();
    descriptor: ()Lcom/oracle/truffle/api/debug/Breakpoint$Kind;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 236
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            ifnonnull 2
         1: .line 237
            getstatic com.oracle.truffle.api.debug.Breakpoint$Kind.HALT_INSTRUCTION:Lcom/oracle/truffle/api/debug/Breakpoint$Kind;
            areturn
         2: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            ifnonnull 4
         3: .line 239
            getstatic com.oracle.truffle.api.debug.Breakpoint$Kind.SOURCE_LOCATION:Lcom/oracle/truffle/api/debug/Breakpoint$Kind;
            areturn
         4: .line 241
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.debug.Breakpoint$Kind.EXCEPTION:Lcom/oracle/truffle/api/debug/Breakpoint$Kind;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public boolean isDisposed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 252
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public boolean isEnabled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 262
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.enabled:Z
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public synchronized void setEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // boolean enabled
         0: .line 276
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
            ifeq 2
         1: .line 278
            return
         2: .line 280
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.enabled:Z
            iload 1 /* enabled */
            if_icmpeq 9
         3: .line 281
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 8
         4: .line 282
            iload 1 /* enabled */
            ifeq 7
         5: .line 283
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.install:()V
         6: .line 284
            goto 8
         7: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.uninstall:()V
         8: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* enabled */
            putfield com.oracle.truffle.api.debug.Breakpoint.enabled:Z
         9: .line 290
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean enabled
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   10     1  enabled  Z
    MethodParameters:
         Name  Flags
      enabled  

  public boolean isResolved();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 299
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolved:Z
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public synchronized void setCondition(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // java.lang.String expression
         0: .line 332
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.condition:Ljava/lang/String;
            ifnonnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: aload 1 /* expression */
            ifnonnull 3
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack: int
         3: iconst_0
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint java.lang.String
      StackMap stack: int int
         4: ixor
            istore 2 /* existsChanged */
        start local 2 // boolean existsChanged
         5: .line 333
            aload 0 /* this */
            aload 1 /* expression */
            putfield com.oracle.truffle.api.debug.Breakpoint.condition:Ljava/lang/String;
         6: .line 334
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.conditionUnchanged:Lcom/oracle/truffle/api/Assumption;
            astore 3 /* assumption */
        start local 3 // com.oracle.truffle.api.Assumption assumption
         7: .line 335
            aload 3 /* assumption */
            ifnull 10
         8: .line 336
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.conditionUnchanged:Lcom/oracle/truffle/api/Assumption;
         9: .line 337
            aload 3 /* assumption */
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
        10: .line 339
      StackMap locals: int com.oracle.truffle.api.Assumption
      StackMap stack:
            iload 2 /* existsChanged */
            ifeq 15
        11: .line 340
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.conditionExistsUnchanged:Lcom/oracle/truffle/api/Assumption;
            astore 3 /* assumption */
        12: .line 341
            aload 3 /* assumption */
            ifnull 15
        13: .line 342
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.conditionExistsUnchanged:Lcom/oracle/truffle/api/Assumption;
        14: .line 343
            aload 3 /* assumption */
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
        15: .line 346
      StackMap locals:
      StackMap stack:
            return
        end local 3 // com.oracle.truffle.api.Assumption assumption
        end local 2 // boolean existsChanged
        end local 1 // java.lang.String expression
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   16     1     expression  Ljava/lang/String;
            5   16     2  existsChanged  Z
            7   16     3     assumption  Lcom/oracle/truffle/api/Assumption;
    MethodParameters:
            Name  Flags
      expression  

  public java.lang.String getCondition();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 356
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.condition:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.debug.SuppressFBWarnings(value = {"UG"})
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.oracle.truffle.api.debug.SuppressFBWarnings(value = {"UG"})

  public void dispose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 366
            aconst_null
            astore 1 /* breakpointSessions */
        start local 1 // com.oracle.truffle.api.debug.DebuggerSession[] breakpointSessions
         1: .line 367
            aconst_null
            astore 2 /* breakpointDebugger */
        start local 2 // com.oracle.truffle.api.debug.Debugger breakpointDebugger
         2: .line 368
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         3: .line 369
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
            ifne 12
         4: .line 370
            aload 0 /* this */
            iconst_0
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.setEnabled:(Z)V
         5: .line 371
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sourceBinding:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.EventBinding
            astore 4 /* binding */
        start local 4 // com.oracle.truffle.api.instrumentation.EventBinding binding
         6: .line 372
            aload 4 /* binding */
            ifnull 8
         7: .line 373
            aload 4 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         8: .line 375
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.debug.DebuggerSession[] com.oracle.truffle.api.debug.Debugger com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            anewarray com.oracle.truffle.api.debug.DebuggerSession
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebuggerSession[]
            astore 1 /* breakpointSessions */
         9: .line 376
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            astore 2 /* breakpointDebugger */
        10: .line 377
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
        11: .line 378
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
        end local 4 // com.oracle.truffle.api.instrumentation.EventBinding binding
        12: .line 368
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        13: goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: aload 3
            monitorexit
        15: athrow
        16: .line 381
      StackMap locals:
      StackMap stack:
            aload 1 /* breakpointSessions */
            ifnull 22
        17: .line 382
            aload 1 /* breakpointSessions */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 21
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.debug.DebuggerSession[] com.oracle.truffle.api.debug.Debugger top int int com.oracle.truffle.api.debug.DebuggerSession[]
      StackMap stack:
        18: aload 6
            iload 4
            aaload
            astore 3 /* session */
        start local 3 // com.oracle.truffle.api.debug.DebuggerSession session
        19: .line 383
            aload 3 /* session */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.disposeBreakpoint:(Lcom/oracle/truffle/api/debug/Breakpoint;)V
        end local 3 // com.oracle.truffle.api.debug.DebuggerSession session
        20: .line 382
            iinc 4 1
      StackMap locals:
      StackMap stack:
        21: iload 4
            iload 5
            if_icmplt 18
        22: .line 386
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.debug.DebuggerSession[] com.oracle.truffle.api.debug.Debugger
      StackMap stack:
            aload 2 /* breakpointDebugger */
            ifnull 24
        23: .line 387
            aload 2 /* breakpointDebugger */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Debugger.disposeBreakpoint:(Lcom/oracle/truffle/api/debug/Breakpoint;)V
        24: .line 389
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.debug.Debugger breakpointDebugger
        end local 1 // com.oracle.truffle.api.debug.DebuggerSession[] breakpointSessions
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   25     0                this  Lcom/oracle/truffle/api/debug/Breakpoint;
            1   25     1  breakpointSessions  [Lcom/oracle/truffle/api/debug/DebuggerSession;
            2   25     2  breakpointDebugger  Lcom/oracle/truffle/api/debug/Debugger;
            6   12     4             binding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
           19   20     3             session  Lcom/oracle/truffle/api/debug/DebuggerSession;
      Exception table:
        from    to  target  type
           3    13      14  any
          14    15      14  any

  public boolean isOneShot();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 397
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.oneShot:Z
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public int getIgnoreCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 407
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.ignoreCount:I
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public void setIgnoreCount(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // int ignoreCount
         0: .line 427
            aload 0 /* this */
            iload 1 /* ignoreCount */
            putfield com.oracle.truffle.api.debug.Breakpoint.ignoreCount:I
         1: .line 428
            return
        end local 1 // int ignoreCount
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    2     1  ignoreCount  I
    MethodParameters:
             Name  Flags
      ignoreCount  

  public int getHitCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 436
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.hitCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            l2i
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public java.lang.String getLocationDescription();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 445
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public com.oracle.truffle.api.debug.SuspendAnchor getSuspendAnchor();
    descriptor: ()Lcom/oracle/truffle/api/debug/SuspendAnchor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 454
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.suspendAnchor:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public boolean isModifiable();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 469
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 479
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "@"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.Object.hashCode:()I
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  private synchronized com.oracle.truffle.api.Assumption getConditionUnchanged();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 483
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.conditionUnchanged:Lcom/oracle/truffle/api/Assumption;
            ifnonnull 2
         1: .line 484
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            ldc "Breakpoint condition unchanged."
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
            putfield com.oracle.truffle.api.debug.Breakpoint.conditionUnchanged:Lcom/oracle/truffle/api/Assumption;
         2: .line 486
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.conditionUnchanged:Lcom/oracle/truffle/api/Assumption;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  private synchronized com.oracle.truffle.api.Assumption getConditionExistsUnchanged();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 490
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.conditionExistsUnchanged:Lcom/oracle/truffle/api/Assumption;
            ifnonnull 2
         1: .line 491
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            ldc "Breakpoint condition existence unchanged."
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:(Ljava/lang/String;)Lcom/oracle/truffle/api/Assumption;
            putfield com.oracle.truffle.api.debug.Breakpoint.conditionExistsUnchanged:Lcom/oracle/truffle/api/Assumption;
         2: .line 493
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.conditionExistsUnchanged:Lcom/oracle/truffle/api/Assumption;
            areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  synchronized void installGlobal(com.oracle.truffle.api.debug.Debugger);
    descriptor: (Lcom/oracle/truffle/api/debug/Debugger;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.debug.Debugger d
         0: .line 497
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
            ifeq 2
         1: .line 498
            new java.lang.IllegalArgumentException
            dup
            ldc "Cannot install breakpoint, it is disposed already."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            ifnull 4
         3: .line 501
            new java.lang.IllegalStateException
            dup
            ldc "Breakpoint is already installed in a Debugger instance."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* d */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.install:(Lcom/oracle/truffle/api/debug/Debugger;)V
         5: .line 504
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.global:Z
         6: .line 505
            return
        end local 1 // com.oracle.truffle.api.debug.Debugger d
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    7     1     d  Lcom/oracle/truffle/api/debug/Debugger;
    MethodParameters:
      Name  Flags
      d     

  private void install(com.oracle.truffle.api.debug.Debugger);
    descriptor: (Lcom/oracle/truffle/api/debug/Debugger;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.debug.Debugger d
         0: .line 508
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 509
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            ifnull 3
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            aload 1 /* d */
            if_acmpeq 3
         2: .line 510
            new java.lang.IllegalStateException
            dup
            ldc "Breakpoint is already installed in a different Debugger instance."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 512
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* d */
            putfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
         4: .line 513
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            ifnull 6
         5: .line 514
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            aload 1 /* d */
            invokevirtual com.oracle.truffle.api.debug.BreakpointExceptionFilter.setDebugger:(Lcom/oracle/truffle/api/debug/Debugger;)V
         6: .line 516
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.debug.Debugger d
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    7     1     d  Lcom/oracle/truffle/api/debug/Debugger;
    MethodParameters:
      Name  Flags
      d     

  boolean install(com.oracle.truffle.api.debug.DebuggerSession, boolean);
    descriptor: (Lcom/oracle/truffle/api/debug/DebuggerSession;Z)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.debug.DebuggerSession d
        start local 2 // boolean failOnError
         0: .line 519
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 520
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
            ifeq 6
         2: .line 521
            iload 2 /* failOnError */
            ifeq 4
         3: .line 522
            new java.lang.IllegalArgumentException
            dup
            ldc "Cannot install breakpoint, it is disposed already."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 524
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 3
            monitorexit
         5: iconst_0
            ireturn
         6: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            aload 1 /* d */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 11
         7: .line 528
            iload 2 /* failOnError */
            ifeq 9
         8: .line 529
            new java.lang.IllegalStateException
            dup
            ldc "Breakpoint is already installed in the session."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 531
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        10: iconst_1
            ireturn
        11: .line 534
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            aload 1 /* d */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        12: .line 535
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.sessionsAssumptionInvalidate:()V
        13: .line 536
            aload 0 /* this */
            aload 1 /* d */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.getDebugger:()Lcom/oracle/truffle/api/debug/Debugger;
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.install:(Lcom/oracle/truffle/api/debug/Debugger;)V
        14: .line 519
            aload 3
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 3
            monitorexit
        17: athrow
        18: .line 538
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.enabled:Z
            ifeq 20
        19: .line 539
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.install:()V
        20: .line 541
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // boolean failOnError
        end local 1 // com.oracle.truffle.api.debug.DebuggerSession d
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0         this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   21     1            d  Lcom/oracle/truffle/api/debug/DebuggerSession;
            0   21     2  failOnError  Z
      Exception table:
        from    to  target  type
           1     5      16  any
           6    10      16  any
          11    15      16  any
          16    17      16  any
    MethodParameters:
             Name  Flags
      d            
      failOnError  

  private void install();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 558
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sourceBinding:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.EventBinding
            astore 2 /* binding */
        start local 2 // com.oracle.truffle.api.instrumentation.EventBinding binding
         1: .line 559
            aload 2 /* binding */
            ifnonnull 20
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            invokevirtual com.oracle.truffle.api.debug.BreakpointLocation.createSourceFilter:()Lcom/oracle/truffle/api/instrumentation/SourceFilter;
            dup
            astore 1 /* filter */
        start local 1 // com.oracle.truffle.api.instrumentation.SourceFilter filter
         2: ifnull 20
         3: .line 560
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolvedSourceInAttach:Ljava/util/concurrent/atomic/AtomicReference;
            getstatic com.oracle.truffle.api.debug.Breakpoint.NO_SOURCE:Lcom/oracle/truffle/api/source/Source;
            invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
         4: .line 562
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            invokevirtual com.oracle.truffle.api.debug.BreakpointLocation.createSourcePredicate:()Ljava/util/function/Predicate;
            putfield com.oracle.truffle.api.debug.Breakpoint.sourcePredicate:Ljava/util/function/Predicate;
         5: .line 563
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sourceBinding:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            invokevirtual com.oracle.truffle.api.debug.Debugger.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            aload 1 /* filter */
            new com.oracle.truffle.api.debug.Breakpoint$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$1.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;)V
         6: .line 573
            iconst_1
         7: .line 563
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecuteSourceListener:(Lcom/oracle/truffle/api/instrumentation/SourceFilter;Lcom/oracle/truffle/api/instrumentation/ExecuteSourceListener;Z)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            dup
            astore 2 /* binding */
            invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
         8: .line 573
            ifne 16
         9: .line 574
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 576
            goto 16
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceFilter com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: java.lang.Throwable
        11: astore 3
        12: .line 577
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolvedSourceInAttach:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.source.Source
            astore 4 /* source */
        start local 4 // com.oracle.truffle.api.source.Source source
        13: .line 578
            aload 4 /* source */
            getstatic com.oracle.truffle.api.debug.Breakpoint.NO_SOURCE:Lcom/oracle/truffle/api/source/Source;
            if_acmpeq 15
        14: .line 579
            aload 0 /* this */
            aload 4 /* source */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.resolveBreakpointAssignBinding:(Lcom/oracle/truffle/api/source/Source;)V
        end local 4 // com.oracle.truffle.api.source.Source source
        15: .line 581
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3
            athrow
        16: .line 577
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolvedSourceInAttach:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.source.Source
            astore 4 /* source */
        start local 4 // com.oracle.truffle.api.source.Source source
        17: .line 578
            aload 4 /* source */
            getstatic com.oracle.truffle.api.debug.Breakpoint.NO_SOURCE:Lcom/oracle/truffle/api/source/Source;
            if_acmpeq 22
        18: .line 579
            aload 0 /* this */
            aload 4 /* source */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.resolveBreakpointAssignBinding:(Lcom/oracle/truffle/api/source/Source;)V
        end local 4 // com.oracle.truffle.api.source.Source source
        19: .line 582
            goto 22
        end local 1 // com.oracle.truffle.api.instrumentation.SourceFilter filter
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint top com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack:
        20: aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.breakpointBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            ifnonnull 22
            aload 2 /* binding */
            ifnull 21
            aload 2 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.isDisposed:()Z
            ifeq 22
        21: .line 584
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            aconst_null
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.suspendAnchor:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            invokevirtual com.oracle.truffle.api.debug.BreakpointLocation.createLocationFilter:(Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/api/debug/SuspendAnchor;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.assignBinding:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
        22: .line 586
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.instrumentation.EventBinding binding
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0     this  Lcom/oracle/truffle/api/debug/Breakpoint;
            2   20     1   filter  Lcom/oracle/truffle/api/instrumentation/SourceFilter;
            1   23     2  binding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
           13   15     4   source  Lcom/oracle/truffle/api/source/Source;
           17   19     4   source  Lcom/oracle/truffle/api/source/Source;
      Exception table:
        from    to  target  type
           4    11      11  any

  boolean isResolvable();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 589
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            invokevirtual com.oracle.truffle.api.debug.BreakpointLocation.canAdjustLocation:()Z
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  void doResolve(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.source.Source source
         0: .line 593
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolved:Z
            ifne 3
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sourcePredicate:Ljava/util/function/Predicate;
            ifnull 3
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sourcePredicate:Ljava/util/function/Predicate;
            aload 1 /* source */
            invokeinterface java.util.function.Predicate.test:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 594
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolvedSourceInAttach:Ljava/util/concurrent/atomic/AtomicReference;
            aload 1 /* source */
            getstatic com.oracle.truffle.api.debug.Breakpoint.RESOLVED_LOCATION_ACCUMULATOR:Ljava/util/function/BinaryOperator;
            invokevirtual java.util.concurrent.atomic.AtomicReference.getAndAccumulate:(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
            ifnonnull 3
         2: .line 596
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.resolveBreakpointAssignBinding:(Lcom/oracle/truffle/api/source/Source;)V
         3: .line 599
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.source.Source source
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    4     1  source  Lcom/oracle/truffle/api/source/Source;
    MethodParameters:
        Name  Flags
      source  

  private void resolveBreakpointAssignBinding(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.source.Source source
         0: .line 602
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            aload 1 /* source */
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            invokevirtual com.oracle.truffle.api.debug.Debugger.getEnv:()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.suspendAnchor:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            invokevirtual com.oracle.truffle.api.debug.BreakpointLocation.adjustLocation:(Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;Lcom/oracle/truffle/api/debug/SuspendAnchor;)Lcom/oracle/truffle/api/source/SourceSection;
            astore 2 /* location */
        start local 2 // com.oracle.truffle.api.source.SourceSection location
         1: .line 603
            aload 2 /* location */
            ifnonnull 2
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.hasCharacters:()Z
            ifne 7
         2: .line 604
      StackMap locals: com.oracle.truffle.api.source.SourceSection
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sourceBinding:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.EventBinding
            astore 3 /* eb */
        start local 3 // com.oracle.truffle.api.instrumentation.EventBinding eb
         3: .line 605
            aload 3 /* eb */
            ifnull 5
         4: .line 606
            aload 3 /* eb */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         5: .line 608
      StackMap locals: com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack:
            aload 0 /* this */
            aload 2 /* location */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.resolveBreakpoint:(Lcom/oracle/truffle/api/source/SourceSection;)V
         6: .line 609
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.locationKey:Lcom/oracle/truffle/api/debug/BreakpointLocation;
            aload 1 /* source */
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.suspendAnchor:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            invokevirtual com.oracle.truffle.api.debug.BreakpointLocation.createLocationFilter:(Lcom/oracle/truffle/api/source/Source;Lcom/oracle/truffle/api/debug/SuspendAnchor;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.assignBinding:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
        end local 3 // com.oracle.truffle.api.instrumentation.EventBinding eb
         7: .line 611
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.source.SourceSection location
        end local 1 // com.oracle.truffle.api.source.Source source
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    8     1    source  Lcom/oracle/truffle/api/source/Source;
            1    8     2  location  Lcom/oracle/truffle/api/source/SourceSection;
            3    7     3        eb  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
    MethodParameters:
        Name  Flags
      source  

  private void assignBinding(com.oracle.truffle.api.instrumentation.SourceSectionFilter);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.instrumentation.SourceSectionFilter locationFilter
         0: .line 614
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingAttaching:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.getAndSet:(Z)Z
            istore 2 /* attaching */
        start local 2 // boolean attaching
         1: .line 615
            iload 2 /* attaching */
            ifne 35
         2: .line 616
            aconst_null
            astore 3 /* newBinding */
        start local 3 // com.oracle.truffle.api.instrumentation.EventBinding newBinding
         3: .line 618
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.debugger:Lcom/oracle/truffle/api/debug/Debugger;
            invokevirtual com.oracle.truffle.api.debug.Debugger.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            aload 1 /* locationFilter */
            new com.oracle.truffle.api.debug.Breakpoint$BreakpointNodeFactory
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$BreakpointNodeFactory.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;)V
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            dup
            astore 3 /* newBinding */
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         4: .line 619
            goto 21
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceSectionFilter int com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack: java.lang.Throwable
         5: astore 4
         6: .line 620
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingAttaching:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
         7: .line 621
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         8: .line 622
            aload 3 /* newBinding */
            ifnull 14
         9: .line 623
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.resolved:Z
        10: .line 624
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 13
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceSectionFilter int com.oracle.truffle.api.instrumentation.EventBinding java.lang.Throwable com.oracle.truffle.api.debug.Breakpoint top java.util.Iterator
      StackMap stack:
        11: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebuggerSession
            astore 6 /* s */
        start local 6 // com.oracle.truffle.api.debug.DebuggerSession s
        12: .line 625
            aload 6 /* s */
            getfield com.oracle.truffle.api.debug.DebuggerSession.allBindings:Ljava/util/Set;
            aload 3 /* newBinding */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.oracle.truffle.api.debug.DebuggerSession s
        13: .line 624
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        14: .line 630
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceSectionFilter int com.oracle.truffle.api.instrumentation.EventBinding java.lang.Throwable com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingReady:Z
        15: .line 631
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        16: .line 621
            aload 5
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 5
            monitorexit
        19: athrow
        20: .line 633
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        21: .line 620
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingAttaching:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
        22: .line 621
            aload 0 /* this */
            dup
            astore 5
            monitorenter
        23: .line 622
            aload 3 /* newBinding */
            ifnull 29
        24: .line 623
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.resolved:Z
        25: .line 624
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 28
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceSectionFilter int com.oracle.truffle.api.instrumentation.EventBinding top com.oracle.truffle.api.debug.Breakpoint top java.util.Iterator
      StackMap stack:
        26: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebuggerSession
            astore 6 /* s */
        start local 6 // com.oracle.truffle.api.debug.DebuggerSession s
        27: .line 625
            aload 6 /* s */
            getfield com.oracle.truffle.api.debug.DebuggerSession.allBindings:Ljava/util/Set;
            aload 3 /* newBinding */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // com.oracle.truffle.api.debug.DebuggerSession s
        28: .line 624
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 26
        29: .line 630
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceSectionFilter int com.oracle.truffle.api.instrumentation.EventBinding top com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingReady:Z
        30: .line 631
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        31: .line 621
            aload 5
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 5
            monitorexit
        34: athrow
        end local 3 // com.oracle.truffle.api.instrumentation.EventBinding newBinding
        35: .line 635
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.SourceSectionFilter int
      StackMap stack:
            return
        end local 2 // boolean attaching
        end local 1 // com.oracle.truffle.api.instrumentation.SourceSectionFilter locationFilter
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   36     0            this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   36     1  locationFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            1   36     2       attaching  Z
            3   35     3      newBinding  Lcom/oracle/truffle/api/instrumentation/EventBinding<+Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;
           12   13     6               s  Lcom/oracle/truffle/api/debug/DebuggerSession;
           27   28     6               s  Lcom/oracle/truffle/api/debug/DebuggerSession;
      Exception table:
        from    to  target  type
           3     5       5  any
           8    17      18  any
          18    19      18  any
          23    32      33  any
          33    34      33  any
    MethodParameters:
                Name  Flags
      locationFilter  

  boolean isGlobal();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 638
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.global:Z
            ireturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  synchronized void sessionClosed(com.oracle.truffle.api.debug.DebuggerSession);
    descriptor: (Lcom/oracle/truffle/api/debug/DebuggerSession;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.debug.DebuggerSession d
         0: .line 642
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            aload 1 /* d */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 643
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.sessionsAssumptionInvalidate:()V
         2: .line 644
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 4
         3: .line 645
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.uninstall:()V
         4: .line 647
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.debug.DebuggerSession d
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    5     1     d  Lcom/oracle/truffle/api/debug/DebuggerSession;
    MethodParameters:
      Name  Flags
      d     

  com.oracle.truffle.api.Assumption getSessionsUnchanged();
    descriptor: ()Lcom/oracle/truffle/api/Assumption;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 650
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 651
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessionsUnchanged:Lcom/oracle/truffle/api/Assumption;
            astore 1 /* sessionsLocal */
        start local 1 // com.oracle.truffle.api.Assumption sessionsLocal
         2: .line 652
            aload 1 /* sessionsLocal */
            ifnonnull 4
         3: .line 653
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createAssumption:()Lcom/oracle/truffle/api/Assumption;
            dup
            astore 1 /* sessionsLocal */
            putfield com.oracle.truffle.api.debug.Breakpoint.sessionsUnchanged:Lcom/oracle/truffle/api/Assumption;
         4: .line 655
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            aload 1 /* sessionsLocal */
            areturn
        end local 1 // com.oracle.truffle.api.Assumption sessionsLocal
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lcom/oracle/truffle/api/debug/Breakpoint;
            2    5     1  sessionsLocal  Lcom/oracle/truffle/api/Assumption;

  private void sessionsAssumptionInvalidate();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 659
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 660
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessionsUnchanged:Lcom/oracle/truffle/api/Assumption;
            astore 1 /* assumption */
        start local 1 // com.oracle.truffle.api.Assumption assumption
         2: .line 661
            aload 1 /* assumption */
            ifnull 5
         3: .line 662
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.sessionsUnchanged:Lcom/oracle/truffle/api/Assumption;
         4: .line 663
            aload 1 /* assumption */
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:()V
         5: .line 665
      StackMap locals: com.oracle.truffle.api.Assumption
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.Assumption assumption
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/oracle/truffle/api/debug/Breakpoint;
            2    6     1  assumption  Lcom/oracle/truffle/api/Assumption;

  private void resolveBreakpoint(com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/source/SourceSection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.source.SourceSection resolvedLocation
         0: .line 668
            iconst_0
            istore 2 /* notifyResolved */
        start local 2 // boolean notifyResolved
         1: .line 669
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         2: .line 670
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.disposed:Z
            ifeq 5
         3: .line 672
            aload 3
            monitorexit
         4: return
         5: .line 674
      StackMap locals: int com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.isResolved:()Z
            ifne 12
         6: .line 675
            iconst_1
            istore 2 /* notifyResolved */
         7: .line 676
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.api.debug.Breakpoint.resolved:Z
         8: .line 677
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 11
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.source.SourceSection int com.oracle.truffle.api.debug.Breakpoint top java.util.Iterator
      StackMap stack:
         9: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebuggerSession
            astore 4 /* s */
        start local 4 // com.oracle.truffle.api.debug.DebuggerSession s
        10: .line 678
            aload 4 /* s */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.breakpointResolved:(Lcom/oracle/truffle/api/debug/Breakpoint;)V
        end local 4 // com.oracle.truffle.api.debug.DebuggerSession s
        11: .line 677
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        12: .line 669
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.source.SourceSection int com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 3
            monitorexit
        13: goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: aload 3
            monitorexit
        15: athrow
        16: .line 682
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyResolved */
            ifeq 18
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolveListener:Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;
            ifnull 18
        17: .line 683
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.resolveListener:Lcom/oracle/truffle/api/debug/Breakpoint$ResolveListener;
            aload 0 /* this */
            aload 1 /* resolvedLocation */
            invokeinterface com.oracle.truffle.api.debug.Breakpoint$ResolveListener.breakpointResolved:(Lcom/oracle/truffle/api/debug/Breakpoint;Lcom/oracle/truffle/api/source/SourceSection;)V
        18: .line 685
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean notifyResolved
        end local 1 // com.oracle.truffle.api.source.SourceSection resolvedLocation
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   19     0              this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   19     1  resolvedLocation  Lcom/oracle/truffle/api/source/SourceSection;
            1   19     2    notifyResolved  Z
           10   11     4                 s  Lcom/oracle/truffle/api/debug/DebuggerSession;
      Exception table:
        from    to  target  type
           2     4      14  any
           5    13      14  any
          14    15      14  any
    MethodParameters:
                  Name  Flags
      resolvedLocation  

  private void uninstall();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 688
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 689
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.breakpointBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            astore 1 /* binding */
        start local 1 // com.oracle.truffle.api.instrumentation.EventBinding binding
         2: .line 690
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         3: .line 691
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.sessions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.EventBinding top java.util.Iterator
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.debug.DebuggerSession
            astore 2 /* s */
        start local 2 // com.oracle.truffle.api.debug.DebuggerSession s
         5: .line 692
            aload 2 /* s */
            getfield com.oracle.truffle.api.debug.DebuggerSession.allBindings:Ljava/util/Set;
            aload 1 /* binding */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        end local 2 // com.oracle.truffle.api.debug.DebuggerSession s
         6: .line 691
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         7: .line 694
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingReady:Z
         8: .line 695
            aload 1 /* binding */
            ifnull 10
         9: .line 696
            aload 1 /* binding */
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
        10: .line 698
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.EventBinding
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.debug.Breakpoint.resolved:Z
        11: .line 699
            return
        end local 1 // com.oracle.truffle.api.instrumentation.EventBinding binding
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lcom/oracle/truffle/api/debug/Breakpoint;
            2   12     1  binding  Lcom/oracle/truffle/api/instrumentation/EventBinding<*>;
            5    6     2        s  Lcom/oracle/truffle/api/debug/DebuggerSession;

  boolean notifyIndirectHit(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.debug.DebuggerNode, com.oracle.truffle.api.debug.DebuggerNode, com.oracle.truffle.api.frame.MaterializedFrame, com.oracle.truffle.api.debug.DebugException);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/frame/MaterializedFrame;Lcom/oracle/truffle/api/debug/DebugException;)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=6
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.debug.DebuggerNode source
        start local 3 // com.oracle.truffle.api.debug.DebuggerNode node
        start local 4 // com.oracle.truffle.api.frame.MaterializedFrame frame
        start local 5 // com.oracle.truffle.api.debug.DebugException exception
         0: .line 707
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.isEnabled:()Z
            ifne 2
         1: .line 708
            iconst_0
            ireturn
         2: .line 710
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 3
            aload 3 /* node */
            invokevirtual com.oracle.truffle.api.debug.DebuggerNode.getBreakpoint:()Lcom/oracle/truffle/api/debug/Breakpoint;
            aload 0 /* this */
            if_acmpeq 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 712
      StackMap locals:
      StackMap stack:
            aload 2 /* source */
            aload 3 /* node */
            if_acmpeq 25
         4: .line 714
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.rootInstanceRef:Ljava/lang/ref/Reference;
            ifnull 14
         5: .line 715
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.rootInstanceRef:Ljava/lang/ref/Reference;
            invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
            astore 6 /* rootInstance */
        start local 6 // java.lang.Object rootInstance
         6: .line 716
            aload 6 /* rootInstance */
            ifnull 14
         7: .line 717
            aload 1 /* context */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            astore 7 /* contextNode */
        start local 7 // com.oracle.truffle.api.nodes.Node contextNode
         8: .line 718
            aload 7 /* contextNode */
            invokestatic com.oracle.truffle.api.interop.NodeLibrary.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/NodeLibrary;
            astore 8 /* contextNodeLibrary */
        start local 8 // com.oracle.truffle.api.interop.NodeLibrary contextNodeLibrary
         9: .line 719
            aload 8 /* contextNodeLibrary */
            aload 7 /* contextNode */
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.interop.NodeLibrary.hasRootInstance:(Ljava/lang/Object;Lcom/oracle/truffle/api/frame/Frame;)Z
            ifeq 14
        10: .line 721
            aload 6 /* rootInstance */
            aload 8 /* contextNodeLibrary */
            aload 7 /* contextNode */
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.interop.NodeLibrary.getRootInstance:(Ljava/lang/Object;Lcom/oracle/truffle/api/frame/Frame;)Ljava/lang/Object;
            if_acmpeq 14
        11: .line 722
            iconst_0
            ireturn
        12: .line 724
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint com.oracle.truffle.api.instrumentation.EventContext com.oracle.truffle.api.debug.DebuggerNode com.oracle.truffle.api.debug.DebuggerNode com.oracle.truffle.api.frame.MaterializedFrame com.oracle.truffle.api.debug.DebugException java.lang.Object com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.interop.NodeLibrary
      StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
            astore 9 /* e */
        start local 9 // com.oracle.truffle.api.interop.UnsupportedMessageException e
        13: .line 725
            aload 9 /* e */
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 9 // com.oracle.truffle.api.interop.UnsupportedMessageException e
        end local 8 // com.oracle.truffle.api.interop.NodeLibrary contextNodeLibrary
        end local 7 // com.oracle.truffle.api.nodes.Node contextNode
        end local 6 // java.lang.Object rootInstance
        14: .line 730
      StackMap locals:
      StackMap stack:
            aload 3 /* node */
            checkcast com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode
            astore 6 /* breakpointNode */
        start local 6 // com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode breakpointNode
        15: .line 731
            aload 6 /* breakpointNode */
            aload 4 /* frame */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode.testCondition:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Z
            ifne 17
        16: .line 732
            iconst_0
            ireturn
        17: .line 734
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            ifnull 23
            aload 5 /* exception */
            ifnull 23
        18: .line 735
            aload 5 /* exception */
            invokevirtual com.oracle.truffle.api.debug.DebugException.getRawException:()Ljava/lang/Throwable;
            astore 7 /* throwable */
        start local 7 // java.lang.Throwable throwable
        19: .line 736
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 20
            aload 7 /* throwable */
            ifnonnull 20
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        20: .line 737
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.exceptionFilter:Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter;
            aload 3 /* node */
            aload 7 /* throwable */
            invokevirtual com.oracle.truffle.api.debug.BreakpointExceptionFilter.matchException:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Throwable;)Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
            astore 8 /* matched */
        start local 8 // com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match matched
        21: .line 738
            aload 8 /* matched */
            getfield com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match.isMatched:Z
            ifne 23
        22: .line 739
            iconst_0
            ireturn
        end local 8 // com.oracle.truffle.api.debug.BreakpointExceptionFilter$Match matched
        end local 7 // java.lang.Throwable throwable
        23: .line 742
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.hitCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.ignoreCount:I
            i2l
            lcmp
            ifgt 25
        24: .line 744
            iconst_0
            ireturn
        end local 6 // com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode breakpointNode
        25: .line 748
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.isOneShot:()Z
            ifeq 27
        26: .line 749
            aload 0 /* this */
            iconst_0
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.setEnabled:(Z)V
        27: .line 751
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 5 // com.oracle.truffle.api.debug.DebugException exception
        end local 4 // com.oracle.truffle.api.frame.MaterializedFrame frame
        end local 3 // com.oracle.truffle.api.debug.DebuggerNode node
        end local 2 // com.oracle.truffle.api.debug.DebuggerNode source
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   28     0                this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   28     1             context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   28     2              source  Lcom/oracle/truffle/api/debug/DebuggerNode;
            0   28     3                node  Lcom/oracle/truffle/api/debug/DebuggerNode;
            0   28     4               frame  Lcom/oracle/truffle/api/frame/MaterializedFrame;
            0   28     5           exception  Lcom/oracle/truffle/api/debug/DebugException;
            6   14     6        rootInstance  Ljava/lang/Object;
            8   14     7         contextNode  Lcom/oracle/truffle/api/nodes/Node;
            9   14     8  contextNodeLibrary  Lcom/oracle/truffle/api/interop/NodeLibrary;
           13   14     9                   e  Lcom/oracle/truffle/api/interop/UnsupportedMessageException;
           15   25     6      breakpointNode  Lcom/oracle/truffle/api/debug/Breakpoint$AbstractBreakpointNode;
           19   23     7           throwable  Ljava/lang/Throwable;
           21   23     8             matched  Lcom/oracle/truffle/api/debug/BreakpointExceptionFilter$Match;
      Exception table:
        from    to  target  type
          10    11      12  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    Exceptions:
      throws com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure
    MethodParameters:
           Name  Flags
      context    
      source     
      node       
      frame      
      exception  

  private java.lang.Object doBreak(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.debug.DebuggerNode, com.oracle.truffle.api.debug.Breakpoint$SessionList, boolean, com.oracle.truffle.api.frame.MaterializedFrame, boolean, java.lang.Object, java.lang.Throwable, com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;ZLcom/oracle/truffle/api/frame/MaterializedFrame;ZLjava/lang/Object;Ljava/lang/Throwable;Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=13, locals=10, args_size=10
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.debug.DebuggerNode source
        start local 3 // com.oracle.truffle.api.debug.Breakpoint$SessionList breakInSessions
        start local 4 // boolean activeOnNoninternalCalls
        start local 5 // com.oracle.truffle.api.frame.MaterializedFrame frame
        start local 6 // boolean onEnter
        start local 7 // java.lang.Object result
        start local 8 // java.lang.Throwable exception
        start local 9 // com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure failure
         0: .line 757
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* source */
            aload 3 /* breakInSessions */
            iload 4 /* activeOnNoninternalCalls */
            aload 5 /* frame */
            iload 6 /* onEnter */
            aload 7 /* result */
            aload 8 /* exception */
            aload 2 /* source */
            iconst_0
            aconst_null
            aload 9 /* failure */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.doBreak:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;ZLcom/oracle/truffle/api/frame/MaterializedFrame;ZLjava/lang/Object;Ljava/lang/Throwable;Lcom/oracle/truffle/api/nodes/Node;ZLcom/oracle/truffle/api/debug/DebugException$CatchLocation;Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;)Ljava/lang/Object;
            areturn
        end local 9 // com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure failure
        end local 8 // java.lang.Throwable exception
        end local 7 // java.lang.Object result
        end local 6 // boolean onEnter
        end local 5 // com.oracle.truffle.api.frame.MaterializedFrame frame
        end local 4 // boolean activeOnNoninternalCalls
        end local 3 // com.oracle.truffle.api.debug.Breakpoint$SessionList breakInSessions
        end local 2 // com.oracle.truffle.api.debug.DebuggerNode source
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    1     0                      this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0    1     1                   context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    1     2                    source  Lcom/oracle/truffle/api/debug/DebuggerNode;
            0    1     3           breakInSessions  Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            0    1     4  activeOnNoninternalCalls  Z
            0    1     5                     frame  Lcom/oracle/truffle/api/frame/MaterializedFrame;
            0    1     6                   onEnter  Z
            0    1     7                    result  Ljava/lang/Object;
            0    1     8                 exception  Ljava/lang/Throwable;
            0    1     9                   failure  Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                          Name  Flags
      context                   
      source                    
      breakInSessions           
      activeOnNoninternalCalls  
      frame                     
      onEnter                   
      result                    
      exception                 
      failure                   

  private java.lang.Object doBreak(com.oracle.truffle.api.instrumentation.EventContext, com.oracle.truffle.api.debug.DebuggerNode, com.oracle.truffle.api.debug.Breakpoint$SessionList, boolean, com.oracle.truffle.api.frame.MaterializedFrame, boolean, java.lang.Object, java.lang.Throwable, com.oracle.truffle.api.nodes.Node, boolean, com.oracle.truffle.api.debug.DebugException$CatchLocation, com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;ZLcom/oracle/truffle/api/frame/MaterializedFrame;ZLjava/lang/Object;Ljava/lang/Throwable;Lcom/oracle/truffle/api/nodes/Node;ZLcom/oracle/truffle/api/debug/DebugException$CatchLocation;Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=20, args_size=13
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
        start local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        start local 2 // com.oracle.truffle.api.debug.DebuggerNode source
        start local 3 // com.oracle.truffle.api.debug.Breakpoint$SessionList breakInSessions
        start local 4 // boolean activeOnNoninternalCalls
        start local 5 // com.oracle.truffle.api.frame.MaterializedFrame frame
        start local 6 // boolean onEnter
        start local 7 // java.lang.Object result
        start local 8 // java.lang.Throwable exception
        start local 9 // com.oracle.truffle.api.nodes.Node throwLocation
        start local 10 // boolean isCatchNodeComputed
        start local 11 // com.oracle.truffle.api.debug.DebugException$CatchLocation catchLocation
        start local 12 // com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure failure
         0: .line 763
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.isEnabled:()Z
            ifne 2
         1: .line 767
            aload 7 /* result */
            areturn
         2: .line 769
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.hitCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.ignoreCount:I
            i2l
            lcmp
            ifgt 4
         3: .line 771
            aload 7 /* result */
            areturn
         4: .line 773
      StackMap locals:
      StackMap stack:
            iload 6 /* onEnter */
            ifeq 5
            getstatic com.oracle.truffle.api.debug.SuspendAnchor.BEFORE:Lcom/oracle/truffle/api/debug/SuspendAnchor;
            goto 6
      StackMap locals:
      StackMap stack:
         5: getstatic com.oracle.truffle.api.debug.SuspendAnchor.AFTER:Lcom/oracle/truffle/api/debug/SuspendAnchor;
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.debug.SuspendAnchor
         6: astore 13 /* anchor */
        start local 13 // com.oracle.truffle.api.debug.SuspendAnchor anchor
         7: .line 774
            aload 7 /* result */
            astore 14 /* newResult */
        start local 14 // java.lang.Object newResult
         8: .line 775
            aload 3 /* breakInSessions */
            astore 15 /* current */
        start local 15 // com.oracle.truffle.api.debug.Breakpoint$SessionList current
         9: .line 776
            goto 39
        10: .line 777
      StackMap locals: com.oracle.truffle.api.debug.SuspendAnchor java.lang.Object com.oracle.truffle.api.debug.Breakpoint$SessionList
      StackMap stack:
            aload 15 /* current */
            getfield com.oracle.truffle.api.debug.Breakpoint$SessionList.session:Lcom/oracle/truffle/api/debug/DebuggerSession;
            astore 16 /* session */
        start local 16 // com.oracle.truffle.api.debug.DebuggerSession session
        11: .line 779
            aload 16 /* session */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.debug.Breakpoint.getKind:()Lcom/oracle/truffle/api/debug/Breakpoint$Kind;
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.isBreakpointsActive:(Lcom/oracle/truffle/api/debug/Breakpoint$Kind;)Z
            ifeq 38
        12: .line 780
            iconst_1
            istore 17 /* internalCompliant */
        start local 17 // boolean internalCompliant
        13: .line 781
            aconst_null
            astore 18 /* caller */
        start local 18 // com.oracle.truffle.api.debug.DebuggerSession$Caller caller
        14: .line 782
            iload 4 /* activeOnNoninternalCalls */
            ifeq 19
            aload 16 /* session */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.isIncludeInternal:()Z
            ifne 19
        15: .line 785
            aload 16 /* session */
            iconst_1
            invokestatic com.oracle.truffle.api.debug.DebuggerSession.findCurrentCaller:(Lcom/oracle/truffle/api/debug/DebuggerSession;Z)Lcom/oracle/truffle/api/debug/DebuggerSession$Caller;
            astore 18 /* caller */
        16: .line 786
            aload 18 /* caller */
            ifnull 17
            aload 18 /* caller */
            getfield com.oracle.truffle.api.debug.DebuggerSession$Caller.node:Lcom/oracle/truffle/api/nodes/Node;
            invokevirtual com.oracle.truffle.api.nodes.Node.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            invokevirtual com.oracle.truffle.api.nodes.RootNode.isInternal:()Z
            ifne 17
            iconst_1
            goto 18
      StackMap locals: com.oracle.truffle.api.debug.DebuggerSession int com.oracle.truffle.api.debug.DebuggerSession$Caller
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 17 /* internalCompliant */
        19: .line 788
      StackMap locals:
      StackMap stack:
            iload 17 /* internalCompliant */
            ifeq 38
        20: .line 789
            aload 0 /* this */
            dup
            astore 19
            monitorenter
        21: .line 790
            goto 25
        22: .line 795
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.wait:()V
        23: .line 796
            goto 25
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        24: pop
        25: .line 790
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.breakpointBindingReady:Z
            ifeq 22
        26: .line 789
            aload 19
            monitorexit
        27: goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: aload 19
            monitorexit
        29: athrow
        30: .line 801
      StackMap locals:
      StackMap stack:
            aload 8 /* exception */
            ifnull 33
        31: .line 802
            new com.oracle.truffle.api.debug.DebugException
            dup
            aload 16 /* session */
            aload 8 /* exception */
            aconst_null
            aload 9 /* throwLocation */
            iload 10 /* isCatchNodeComputed */
            aload 11 /* catchLocation */
            invokespecial com.oracle.truffle.api.debug.DebugException.<init>:(Lcom/oracle/truffle/api/debug/DebuggerSession;Ljava/lang/Throwable;Lcom/oracle/truffle/api/nodes/LanguageInfo;Lcom/oracle/truffle/api/nodes/Node;ZLcom/oracle/truffle/api/debug/DebugException$CatchLocation;)V
            astore 19 /* de */
        start local 19 // com.oracle.truffle.api.debug.DebugException de
        32: .line 803
            goto 34
        end local 19 // com.oracle.truffle.api.debug.DebugException de
        33: .line 804
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 19 /* de */
        start local 19 // com.oracle.truffle.api.debug.DebugException de
        34: .line 806
      StackMap locals: com.oracle.truffle.api.debug.DebugException
      StackMap stack:
            aload 18 /* caller */
            ifnull 37
        35: .line 807
            aload 16 /* session */
            aload 1 /* context */
            aload 18 /* caller */
            aconst_null
            aload 2 /* source */
            aload 13 /* anchor */
            aload 14 /* newResult */
            aload 19 /* de */
            aload 12 /* failure */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.notifyAtCaller:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/debug/DebuggerSession$Caller;Lcom/oracle/truffle/api/debug/SteppingStrategy;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/debug/SuspendAnchor;Ljava/lang/Object;Lcom/oracle/truffle/api/debug/DebugException;Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;)Ljava/lang/Object;
            astore 14 /* newResult */
        36: .line 808
            goto 38
        37: .line 809
      StackMap locals:
      StackMap stack:
            aload 16 /* session */
            aload 1 /* context */
            aload 2 /* source */
            aload 5 /* frame */
            aload 13 /* anchor */
            aconst_null
            aload 14 /* newResult */
            aload 19 /* de */
            aload 12 /* failure */
            invokevirtual com.oracle.truffle.api.debug.DebuggerSession.notifyCallback:(Lcom/oracle/truffle/api/instrumentation/EventContext;Lcom/oracle/truffle/api/debug/DebuggerNode;Lcom/oracle/truffle/api/frame/MaterializedFrame;Lcom/oracle/truffle/api/debug/SuspendAnchor;Lcom/oracle/truffle/api/debug/DebuggerNode$InputValuesProvider;Ljava/lang/Object;Lcom/oracle/truffle/api/debug/DebugException;Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;)Ljava/lang/Object;
            astore 14 /* newResult */
        end local 19 // com.oracle.truffle.api.debug.DebugException de
        end local 18 // com.oracle.truffle.api.debug.DebuggerSession$Caller caller
        end local 17 // boolean internalCompliant
        38: .line 813
      StackMap locals:
      StackMap stack:
            aload 15 /* current */
            getfield com.oracle.truffle.api.debug.Breakpoint$SessionList.next:Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            astore 15 /* current */
        end local 16 // com.oracle.truffle.api.debug.DebuggerSession session
        39: .line 776
      StackMap locals:
      StackMap stack:
            aload 15 /* current */
            ifnonnull 10
        40: .line 815
            aload 14 /* newResult */
            areturn
        end local 15 // com.oracle.truffle.api.debug.Breakpoint$SessionList current
        end local 14 // java.lang.Object newResult
        end local 13 // com.oracle.truffle.api.debug.SuspendAnchor anchor
        end local 12 // com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure failure
        end local 11 // com.oracle.truffle.api.debug.DebugException$CatchLocation catchLocation
        end local 10 // boolean isCatchNodeComputed
        end local 9 // com.oracle.truffle.api.nodes.Node throwLocation
        end local 8 // java.lang.Throwable exception
        end local 7 // java.lang.Object result
        end local 6 // boolean onEnter
        end local 5 // com.oracle.truffle.api.frame.MaterializedFrame frame
        end local 4 // boolean activeOnNoninternalCalls
        end local 3 // com.oracle.truffle.api.debug.Breakpoint$SessionList breakInSessions
        end local 2 // com.oracle.truffle.api.debug.DebuggerNode source
        end local 1 // com.oracle.truffle.api.instrumentation.EventContext context
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   41     0                      this  Lcom/oracle/truffle/api/debug/Breakpoint;
            0   41     1                   context  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0   41     2                    source  Lcom/oracle/truffle/api/debug/DebuggerNode;
            0   41     3           breakInSessions  Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            0   41     4  activeOnNoninternalCalls  Z
            0   41     5                     frame  Lcom/oracle/truffle/api/frame/MaterializedFrame;
            0   41     6                   onEnter  Z
            0   41     7                    result  Ljava/lang/Object;
            0   41     8                 exception  Ljava/lang/Throwable;
            0   41     9             throwLocation  Lcom/oracle/truffle/api/nodes/Node;
            0   41    10       isCatchNodeComputed  Z
            0   41    11             catchLocation  Lcom/oracle/truffle/api/debug/DebugException$CatchLocation;
            0   41    12                   failure  Lcom/oracle/truffle/api/debug/Breakpoint$BreakpointConditionFailure;
            7   41    13                    anchor  Lcom/oracle/truffle/api/debug/SuspendAnchor;
            8   41    14                 newResult  Ljava/lang/Object;
            9   41    15                   current  Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
           11   39    16                   session  Lcom/oracle/truffle/api/debug/DebuggerSession;
           13   38    17         internalCompliant  Z
           14   38    18                    caller  Lcom/oracle/truffle/api/debug/DebuggerSession$Caller;
           32   33    19                        de  Lcom/oracle/truffle/api/debug/DebugException;
           34   38    19                        de  Lcom/oracle/truffle/api/debug/DebugException;
      Exception table:
        from    to  target  type
          22    23      24  Class java.lang.InterruptedException
          21    27      28  any
          28    29      28  any
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                          Name  Flags
      context                   
      source                    
      breakInSessions           
      activeOnNoninternalCalls  
      frame                     
      onEnter                   
      result                    
      exception                 
      throwLocation             
      isCatchNodeComputed       
      catchLocation             
      failure                   

  com.oracle.truffle.api.debug.Breakpoint getROWrapper();
    descriptor: ()Lcom/oracle/truffle/api/debug/Breakpoint;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 819
            getstatic com.oracle.truffle.api.debug.Breakpoint.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.global:Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 820
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.roWrapper:Lcom/oracle/truffle/api/debug/Breakpoint$GlobalBreakpoint;
            astore 1 /* wrapper */
        start local 1 // com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint wrapper
         2: .line 821
            aload 1 /* wrapper */
            ifnonnull 11
         3: .line 822
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         4: .line 823
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.roWrapper:Lcom/oracle/truffle/api/debug/Breakpoint$GlobalBreakpoint;
            astore 1 /* wrapper */
         5: .line 824
            aload 1 /* wrapper */
            ifnonnull 7
         6: .line 825
            aload 0 /* this */
            new com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;)V
            dup
            astore 1 /* wrapper */
            putfield com.oracle.truffle.api.debug.Breakpoint.roWrapper:Lcom/oracle/truffle/api/debug/Breakpoint$GlobalBreakpoint;
         7: .line 822
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint com.oracle.truffle.api.debug.Breakpoint
      StackMap stack:
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 829
      StackMap locals:
      StackMap stack:
            aload 1 /* wrapper */
            areturn
        end local 1 // com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint wrapper
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lcom/oracle/truffle/api/debug/Breakpoint;
            2   12     1  wrapper  Lcom/oracle/truffle/api/debug/Breakpoint$GlobalBreakpoint;
      Exception table:
        from    to  target  type
           4     8       9  any
           9    10       9  any

  java.lang.Object getRootInstance();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.Breakpoint this
         0: .line 833
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.rootInstanceRef:Ljava/lang/ref/Reference;
            ifnull 1
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.Breakpoint.rootInstanceRef:Ljava/lang/ref/Reference;
            invokevirtual java.lang.ref.Reference.get:()Ljava/lang/Object;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Object
         2: areturn
        end local 0 // com.oracle.truffle.api.debug.Breakpoint this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/debug/Breakpoint;

  public static com.oracle.truffle.api.debug.Breakpoint$Builder newBuilder(java.net.URI);
    descriptor: (Ljava/net/URI;)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.net.URI sourceUri
         0: .line 844
            new com.oracle.truffle.api.debug.Breakpoint$Builder
            dup
            getstatic com.oracle.truffle.api.debug.Breakpoint.BUILDER_INSTANCE:Lcom/oracle/truffle/api/debug/Breakpoint;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* sourceUri */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$Builder.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;Ljava/lang/Object;)V
            areturn
        end local 0 // java.net.URI sourceUri
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  sourceUri  Ljava/net/URI;
    MethodParameters:
           Name  Flags
      sourceUri  

  public static com.oracle.truffle.api.debug.Breakpoint$Builder newBuilder(com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/api/source/Source;)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.source.Source source
         0: .line 855
            new com.oracle.truffle.api.debug.Breakpoint$Builder
            dup
            getstatic com.oracle.truffle.api.debug.Breakpoint.BUILDER_INSTANCE:Lcom/oracle/truffle/api/debug/Breakpoint;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* source */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$Builder.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;Ljava/lang/Object;)V
            areturn
        end local 0 // com.oracle.truffle.api.source.Source source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  source  Lcom/oracle/truffle/api/source/Source;
    MethodParameters:
        Name  Flags
      source  

  public static com.oracle.truffle.api.debug.Breakpoint$Builder newBuilder(com.oracle.truffle.api.source.SourceSection);
    descriptor: (Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/api/debug/Breakpoint$Builder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.source.SourceSection sourceSection
         0: .line 867
            new com.oracle.truffle.api.debug.Breakpoint$Builder
            dup
            getstatic com.oracle.truffle.api.debug.Breakpoint.BUILDER_INSTANCE:Lcom/oracle/truffle/api/debug/Breakpoint;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            aload 0 /* sourceSection */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$Builder.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;Lcom/oracle/truffle/api/source/SourceSection;)V
            areturn
        end local 0 // com.oracle.truffle.api.source.SourceSection sourceSection
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0  sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
    MethodParameters:
               Name  Flags
      sourceSection  

  public static com.oracle.truffle.api.debug.Breakpoint$ExceptionBuilder newExceptionBuilder(boolean, boolean);
    descriptor: (ZZ)Lcom/oracle/truffle/api/debug/Breakpoint$ExceptionBuilder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // boolean caught
        start local 1 // boolean uncaught
         0: .line 882
            iload 0 /* caught */
            ifne 2
            iload 1 /* uncaught */
            ifne 2
         1: .line 883
            new java.lang.IllegalArgumentException
            dup
            ldc "At least one of 'caught' or 'uncaught' needs to be true."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 885
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.api.debug.Breakpoint$ExceptionBuilder
            dup
            getstatic com.oracle.truffle.api.debug.Breakpoint.BUILDER_INSTANCE:Lcom/oracle/truffle/api/debug/Breakpoint;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            iload 0 /* caught */
            iload 1 /* uncaught */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$ExceptionBuilder.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint;ZZ)V
            areturn
        end local 1 // boolean uncaught
        end local 0 // boolean caught
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0    caught  Z
            0    3     1  uncaught  Z
    MethodParameters:
          Name  Flags
      caught    
      uncaught  

  private static com.oracle.truffle.api.debug.Breakpoint$SessionList removeDuplicateSession(com.oracle.truffle.api.debug.Breakpoint$SessionList, com.oracle.truffle.api.debug.DebuggerSession);
    descriptor: (Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;Lcom/oracle/truffle/api/debug/DebuggerSession;)Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.oracle.truffle.api.debug.Breakpoint$SessionList sessions
        start local 1 // com.oracle.truffle.api.debug.DebuggerSession session
         0: .line 1483
            aload 0 /* sessions */
            astore 2 /* current */
        start local 2 // com.oracle.truffle.api.debug.Breakpoint$SessionList current
         1: .line 1484
            iconst_0
            istore 3 /* foundSession */
        start local 3 // boolean foundSession
         2: .line 1485
            goto 7
         3: .line 1486
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint$SessionList int
      StackMap stack:
            aload 1 /* session */
            aload 2 /* current */
            getfield com.oracle.truffle.api.debug.Breakpoint$SessionList.session:Lcom/oracle/truffle/api/debug/DebuggerSession;
            if_acmpne 6
         4: .line 1487
            iconst_1
            istore 3 /* foundSession */
         5: .line 1488
            goto 8
         6: .line 1490
      StackMap locals:
      StackMap stack:
            aload 2 /* current */
            getfield com.oracle.truffle.api.debug.Breakpoint$SessionList.next:Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            astore 2 /* current */
         7: .line 1485
      StackMap locals:
      StackMap stack:
            aload 2 /* current */
            ifnonnull 3
         8: .line 1492
      StackMap locals:
      StackMap stack:
            iload 3 /* foundSession */
            ifeq 17
         9: .line 1493
            aconst_null
            astore 4 /* newSessions */
        start local 4 // com.oracle.truffle.api.debug.Breakpoint$SessionList newSessions
        10: .line 1494
            aload 0 /* sessions */
            astore 2 /* current */
        11: .line 1495
            goto 15
        12: .line 1496
      StackMap locals: com.oracle.truffle.api.debug.Breakpoint$SessionList
      StackMap stack:
            aload 1 /* session */
            aload 2 /* current */
            getfield com.oracle.truffle.api.debug.Breakpoint$SessionList.session:Lcom/oracle/truffle/api/debug/DebuggerSession;
            if_acmpeq 14
        13: .line 1497
            new com.oracle.truffle.api.debug.Breakpoint$SessionList
            dup
            aload 2 /* current */
            aload 4 /* newSessions */
            invokespecial com.oracle.truffle.api.debug.Breakpoint$SessionList.<init>:(Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;)V
            astore 4 /* newSessions */
        14: .line 1499
      StackMap locals:
      StackMap stack:
            aload 2 /* current */
            getfield com.oracle.truffle.api.debug.Breakpoint$SessionList.next:Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            astore 2 /* current */
        15: .line 1495
      StackMap locals:
      StackMap stack:
            aload 2 /* current */
            ifnonnull 12
        16: .line 1501
            aload 4 /* newSessions */
            areturn
        end local 4 // com.oracle.truffle.api.debug.Breakpoint$SessionList newSessions
        17: .line 1503
      StackMap locals:
      StackMap stack:
            aload 0 /* sessions */
            areturn
        end local 3 // boolean foundSession
        end local 2 // com.oracle.truffle.api.debug.Breakpoint$SessionList current
        end local 1 // com.oracle.truffle.api.debug.DebuggerSession session
        end local 0 // com.oracle.truffle.api.debug.Breakpoint$SessionList sessions
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0      sessions  Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            0   18     1       session  Lcom/oracle/truffle/api/debug/DebuggerSession;
            1   18     2       current  Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
            2   18     3  foundSession  Z
           10   17     4   newSessions  Lcom/oracle/truffle/api/debug/Breakpoint$SessionList;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      sessions  
      session   
}
SourceFile: "Breakpoint.java"
NestMembers:
  com.oracle.truffle.api.debug.Breakpoint$1  com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode  com.oracle.truffle.api.debug.Breakpoint$BreakpointAfterNode  com.oracle.truffle.api.debug.Breakpoint$BreakpointAfterNodeException  com.oracle.truffle.api.debug.Breakpoint$BreakpointBeforeNode  com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure  com.oracle.truffle.api.debug.Breakpoint$BreakpointNodeFactory  com.oracle.truffle.api.debug.Breakpoint$Builder  com.oracle.truffle.api.debug.Breakpoint$ConditionalBreakNode  com.oracle.truffle.api.debug.Breakpoint$ExceptionBuilder  com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint  com.oracle.truffle.api.debug.Breakpoint$Kind  com.oracle.truffle.api.debug.Breakpoint$ResolveListener  com.oracle.truffle.api.debug.Breakpoint$ResolvedLocationOperator  com.oracle.truffle.api.debug.Breakpoint$SessionList
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  com.oracle.truffle.api.debug.Breakpoint$1
  private abstract AbstractBreakpointNode = com.oracle.truffle.api.debug.Breakpoint$AbstractBreakpointNode of com.oracle.truffle.api.debug.Breakpoint
  private BreakpointAfterNode = com.oracle.truffle.api.debug.Breakpoint$BreakpointAfterNode of com.oracle.truffle.api.debug.Breakpoint
  private BreakpointAfterNodeException = com.oracle.truffle.api.debug.Breakpoint$BreakpointAfterNodeException of com.oracle.truffle.api.debug.Breakpoint
  private BreakpointBeforeNode = com.oracle.truffle.api.debug.Breakpoint$BreakpointBeforeNode of com.oracle.truffle.api.debug.Breakpoint
  final BreakpointConditionFailure = com.oracle.truffle.api.debug.Breakpoint$BreakpointConditionFailure of com.oracle.truffle.api.debug.Breakpoint
  private BreakpointNodeFactory = com.oracle.truffle.api.debug.Breakpoint$BreakpointNodeFactory of com.oracle.truffle.api.debug.Breakpoint
  public final Builder = com.oracle.truffle.api.debug.Breakpoint$Builder of com.oracle.truffle.api.debug.Breakpoint
  private ConditionalBreakNode = com.oracle.truffle.api.debug.Breakpoint$ConditionalBreakNode of com.oracle.truffle.api.debug.Breakpoint
  public final ExceptionBuilder = com.oracle.truffle.api.debug.Breakpoint$ExceptionBuilder of com.oracle.truffle.api.debug.Breakpoint
  final GlobalBreakpoint = com.oracle.truffle.api.debug.Breakpoint$GlobalBreakpoint of com.oracle.truffle.api.debug.Breakpoint
  public final Kind = com.oracle.truffle.api.debug.Breakpoint$Kind of com.oracle.truffle.api.debug.Breakpoint
  public abstract ResolveListener = com.oracle.truffle.api.debug.Breakpoint$ResolveListener of com.oracle.truffle.api.debug.Breakpoint
  private ResolvedLocationOperator = com.oracle.truffle.api.debug.Breakpoint$ResolvedLocationOperator of com.oracle.truffle.api.debug.Breakpoint
  final SessionList = com.oracle.truffle.api.debug.Breakpoint$SessionList of com.oracle.truffle.api.debug.Breakpoint
  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
  abstract InputValuesProvider = com.oracle.truffle.api.debug.DebuggerNode$InputValuesProvider of com.oracle.truffle.api.debug.DebuggerNode
  final Caller = com.oracle.truffle.api.debug.DebuggerSession$Caller of com.oracle.truffle.api.debug.DebuggerSession
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public final LiteralBuilder = com.oracle.truffle.api.source.Source$LiteralBuilder of com.oracle.truffle.api.source.Source