abstract class sun.nio.fs.Cancellable implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: sun.nio.fs.Cancellable
  super_class: java.lang.Object
{
  private static final sun.misc.Unsafe unsafe;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final long pollingAddress;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object lock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean completed;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Throwable exception;
    descriptor: Ljava/lang/Throwable;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            invokestatic sun.misc.Unsafe.getUnsafe:()Lsun/misc/Unsafe;
            putstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // sun.nio.fs.Cancellable this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
         2: .line 49
            aload 0 /* this */
            getstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            ldc 4
            invokevirtual sun.misc.Unsafe.allocateMemory:(J)J
            putfield sun.nio.fs.Cancellable.pollingAddress:J
         3: .line 50
            getstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            aconst_null
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.pollingAddress:J
            iconst_0
            invokevirtual sun.misc.Unsafe.putIntVolatile:(Ljava/lang/Object;JI)V
         4: .line 51
            return
        end local 0 // sun.nio.fs.Cancellable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/fs/Cancellable;

  protected long addressToPollForCancel();
    descriptor: ()J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.nio.fs.Cancellable this
         0: .line 58
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.pollingAddress:J
            lreturn
        end local 0 // sun.nio.fs.Cancellable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/fs/Cancellable;

  protected int cancelValue();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.fs.Cancellable this
         0: .line 67
            ldc 2147483647
            ireturn
        end local 0 // sun.nio.fs.Cancellable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/fs/Cancellable;

  final void cancel();
    descriptor: ()V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // sun.nio.fs.Cancellable this
         0: .line 75
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 76
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.completed:Z
            ifne 3
         2: .line 77
            getstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            aconst_null
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.pollingAddress:J
            aload 0 /* this */
            invokevirtual sun.nio.fs.Cancellable.cancelValue:()I
            invokevirtual sun.misc.Unsafe.putIntVolatile:(Ljava/lang/Object;JI)V
         3: .line 75
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         4: goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 80
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.fs.Cancellable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lsun/nio/fs/Cancellable;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  private java.lang.Throwable exception();
    descriptor: ()Ljava/lang/Throwable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.fs.Cancellable this
         0: .line 87
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 88
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.exception:Ljava/lang/Throwable;
            aload 1
            monitorexit
         2: areturn
         3: .line 87
      StackMap locals: sun.nio.fs.Cancellable java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // sun.nio.fs.Cancellable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/fs/Cancellable;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public final void run();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // sun.nio.fs.Cancellable this
         0: .line 95
            aload 0 /* this */
            invokevirtual sun.nio.fs.Cancellable.implRun:()V
         1: .line 96
            goto 25
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1 /* t */
        start local 1 // java.lang.Throwable t
         3: .line 97
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 98
            aload 0 /* this */
            aload 1 /* t */
            putfield sun.nio.fs.Cancellable.exception:Ljava/lang/Throwable;
         5: .line 97
            aload 2
            monitorexit
         6: goto 9
      StackMap locals: sun.nio.fs.Cancellable java.lang.Throwable java.lang.Object
      StackMap stack: java.lang.Throwable
         7: aload 2
            monitorexit
         8: athrow
        end local 1 // java.lang.Throwable t
         9: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        10: .line 102
            aload 0 /* this */
            iconst_1
            putfield sun.nio.fs.Cancellable.completed:Z
        11: .line 103
            getstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.pollingAddress:J
            invokevirtual sun.misc.Unsafe.freeMemory:(J)V
        12: .line 101
            aload 4
            monitorexit
        13: goto 32
      StackMap locals: sun.nio.fs.Cancellable top top top java.lang.Object
      StackMap stack: java.lang.Throwable
        14: aload 4
            monitorexit
        15: athrow
        16: .line 100
      StackMap locals: sun.nio.fs.Cancellable
      StackMap stack: java.lang.Throwable
            astore 3
        17: .line 101
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        18: .line 102
            aload 0 /* this */
            iconst_1
            putfield sun.nio.fs.Cancellable.completed:Z
        19: .line 103
            getstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.pollingAddress:J
            invokevirtual sun.misc.Unsafe.freeMemory:(J)V
        20: .line 101
            aload 4
            monitorexit
        21: goto 24
      StackMap locals: sun.nio.fs.Cancellable top top java.lang.Throwable java.lang.Object
      StackMap stack: java.lang.Throwable
        22: aload 4
            monitorexit
        23: athrow
        24: .line 105
      StackMap locals:
      StackMap stack:
            aload 3
            athrow
        25: .line 101
      StackMap locals: sun.nio.fs.Cancellable
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        26: .line 102
            aload 0 /* this */
            iconst_1
            putfield sun.nio.fs.Cancellable.completed:Z
        27: .line 103
            getstatic sun.nio.fs.Cancellable.unsafe:Lsun/misc/Unsafe;
            aload 0 /* this */
            getfield sun.nio.fs.Cancellable.pollingAddress:J
            invokevirtual sun.misc.Unsafe.freeMemory:(J)V
        28: .line 101
            aload 4
            monitorexit
        29: goto 32
      StackMap locals: sun.nio.fs.Cancellable top top top java.lang.Object
      StackMap stack: java.lang.Throwable
        30: aload 4
            monitorexit
        31: athrow
        32: .line 106
      StackMap locals: sun.nio.fs.Cancellable
      StackMap stack:
            return
        end local 0 // sun.nio.fs.Cancellable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   33     0  this  Lsun/nio/fs/Cancellable;
            3    9     1     t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
           4     6       7  any
           7     8       7  any
          10    13      14  any
          14    15      14  any
           0     9      16  any
          18    21      22  any
          22    23      22  any
          26    29      30  any
          30    31      30  any

  abstract void implRun();
    descriptor: ()V
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.lang.Throwable

  static void runInterruptibly(sun.nio.fs.Cancellable);
    descriptor: (Lsun/nio/fs/Cancellable;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // sun.nio.fs.Cancellable task
         0: .line 120
            new java.lang.Thread
            dup
            aload 0 /* task */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 1 /* t */
        start local 1 // java.lang.Thread t
         1: .line 121
            aload 1 /* t */
            invokevirtual java.lang.Thread.start:()V
         2: .line 122
            iconst_0
            istore 2 /* cancelledByInterrupt */
        start local 2 // boolean cancelledByInterrupt
         3: .line 123
            goto 9
         4: .line 125
      StackMap locals: java.lang.Thread int
      StackMap stack:
            aload 1 /* t */
            invokevirtual java.lang.Thread.join:()V
         5: .line 126
            goto 9
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         6: pop
         7: .line 127
            iconst_1
            istore 2 /* cancelledByInterrupt */
         8: .line 128
            aload 0 /* task */
            invokevirtual sun.nio.fs.Cancellable.cancel:()V
         9: .line 123
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual java.lang.Thread.isAlive:()Z
            ifne 4
        10: .line 131
            iload 2 /* cancelledByInterrupt */
            ifeq 12
        11: .line 132
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        12: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* task */
            invokevirtual sun.nio.fs.Cancellable.exception:()Ljava/lang/Throwable;
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
        13: .line 134
            aload 3 /* exc */
            ifnull 15
        14: .line 135
            new java.util.concurrent.ExecutionException
            dup
            aload 3 /* exc */
            invokespecial java.util.concurrent.ExecutionException.<init>:(Ljava/lang/Throwable;)V
            athrow
        15: .line 136
      StackMap locals: java.lang.Throwable
      StackMap stack:
            return
        end local 3 // java.lang.Throwable exc
        end local 2 // boolean cancelledByInterrupt
        end local 1 // java.lang.Thread t
        end local 0 // sun.nio.fs.Cancellable task
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   16     0                  task  Lsun/nio/fs/Cancellable;
            1   16     1                     t  Ljava/lang/Thread;
            3   16     2  cancelledByInterrupt  Z
           13   16     3                   exc  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.InterruptedException
    Exceptions:
      throws java.util.concurrent.ExecutionException
    MethodParameters:
      Name  Flags
      task  
}
SourceFile: "Cancellable.java"