public abstract class org.xnio.AbstractIoFuture<T> implements org.xnio.IoFuture<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.xnio.AbstractIoFuture
  super_class: java.lang.Object
{
  private final java.util.concurrent.atomic.AtomicReference<org.xnio.AbstractIoFuture$State<T>> stateRef;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Lorg/xnio/AbstractIoFuture$State<TT;>;>;

  private static final org.xnio.AbstractIoFuture$State<?> ST_INITIAL;
    descriptor: Lorg/xnio/AbstractIoFuture$State;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/xnio/AbstractIoFuture$State<*>;

  private static final org.xnio.AbstractIoFuture$State<?> ST_CANCELLED;
    descriptor: Lorg/xnio/AbstractIoFuture$State;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/xnio/AbstractIoFuture$State<*>;

  private static volatile int[] $SWITCH_TABLE$org$xnio$IoFuture$Status;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 40
            new org.xnio.AbstractIoFuture$InitialState
            dup
            invokespecial org.xnio.AbstractIoFuture$InitialState.<init>:()V
            putstatic org.xnio.AbstractIoFuture.ST_INITIAL:Lorg/xnio/AbstractIoFuture$State;
         1: .line 41
            new org.xnio.AbstractIoFuture$CancelledState
            dup
            invokespecial org.xnio.AbstractIoFuture$CancelledState.<init>:()V
            putstatic org.xnio.AbstractIoFuture.ST_CANCELLED:Lorg/xnio/AbstractIoFuture$State;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 384
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 38
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicReference
            dup
            getstatic org.xnio.AbstractIoFuture.ST_INITIAL:Lorg/xnio/AbstractIoFuture$State;
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
            putfield org.xnio.AbstractIoFuture.stateRef:Ljava/util/concurrent/atomic/AtomicReference;
         2: .line 385
            return
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/xnio/AbstractIoFuture<TT;>;

  public org.xnio.IoFuture$Status getStatus();
    descriptor: ()Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 391
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AbstractIoFuture<TT;>;
    Signature: ()Lorg/xnio/IoFuture$Status;

  private org.xnio.AbstractIoFuture$State<T> getState();
    descriptor: ()Lorg/xnio/AbstractIoFuture$State;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 395
            aload 0 /* this */
            getfield org.xnio.AbstractIoFuture.stateRef:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast org.xnio.AbstractIoFuture$State
            areturn
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AbstractIoFuture<TT;>;
    Signature: ()Lorg/xnio/AbstractIoFuture$State<TT;>;

  private boolean compareAndSetState(org.xnio.AbstractIoFuture$State<T>, org.xnio.AbstractIoFuture$State<T>);
    descriptor: (Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // org.xnio.AbstractIoFuture$State expect
        start local 2 // org.xnio.AbstractIoFuture$State update
         0: .line 399
            aload 0 /* this */
            getfield org.xnio.AbstractIoFuture.stateRef:Ljava/util/concurrent/atomic/AtomicReference;
            aload 1 /* expect */
            aload 2 /* update */
            invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 2 // org.xnio.AbstractIoFuture$State update
        end local 1 // org.xnio.AbstractIoFuture$State expect
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/xnio/AbstractIoFuture<TT;>;
            0    1     1  expect  Lorg/xnio/AbstractIoFuture$State<TT;>;
            0    1     2  update  Lorg/xnio/AbstractIoFuture$State<TT;>;
    Signature: (Lorg/xnio/AbstractIoFuture$State<TT;>;Lorg/xnio/AbstractIoFuture$State<TT;>;)Z
    MethodParameters:
        Name  Flags
      expect  
      update  

  public org.xnio.IoFuture$Status await();
    descriptor: ()Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 406
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 1 /* thread */
        start local 1 // java.lang.Thread thread
         1: .line 409
      StackMap locals: java.lang.Thread
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* state */
        start local 2 // org.xnio.AbstractIoFuture$State state
         2: .line 410
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 4
         3: .line 411
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
         4: .line 413
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            invokestatic org.xnio.Xnio.checkBlockingAllowed:()V
         5: .line 414
            aload 2 /* state */
            aload 1 /* thread */
            invokevirtual org.xnio.AbstractIoFuture$State.withWaiter:(Ljava/lang/Thread;)Lorg/xnio/AbstractIoFuture$State;
            astore 3 /* withWaiter */
        start local 3 // org.xnio.AbstractIoFuture$State withWaiter
         6: .line 415
            aload 0 /* this */
            aload 2 /* state */
            aload 3 /* withWaiter */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 1
         7: .line 416
            invokestatic java.lang.Thread.interrupted:()Z
            istore 4 /* intr */
        start local 4 // boolean intr
         8: .line 419
      StackMap locals: org.xnio.AbstractIoFuture$State int
      StackMap stack:
            aload 0 /* this */
            invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
         9: .line 420
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 10
            iconst_1
            istore 4 /* intr */
        10: .line 421
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* state */
        11: .line 422
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 8
        12: .line 423
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            astore 6
        13: .line 425
            iload 4 /* intr */
            ifeq 14
            aload 1 /* thread */
            invokevirtual java.lang.Thread.interrupt:()V
        14: .line 423
      StackMap locals: org.xnio.AbstractIoFuture java.lang.Thread org.xnio.AbstractIoFuture$State org.xnio.AbstractIoFuture$State int top org.xnio.IoFuture$Status
      StackMap stack:
            aload 6
            areturn
        15: .line 424
      StackMap locals: org.xnio.AbstractIoFuture java.lang.Thread org.xnio.AbstractIoFuture$State org.xnio.AbstractIoFuture$State int
      StackMap stack: java.lang.Throwable
            astore 5
        16: .line 425
            iload 4 /* intr */
            ifeq 17
            aload 1 /* thread */
            invokevirtual java.lang.Thread.interrupt:()V
        17: .line 426
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        end local 4 // boolean intr
        end local 3 // org.xnio.AbstractIoFuture$State withWaiter
        end local 2 // org.xnio.AbstractIoFuture$State state
        end local 1 // java.lang.Thread thread
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lorg/xnio/AbstractIoFuture<TT;>;
            1   18     1      thread  Ljava/lang/Thread;
            2   18     2       state  Lorg/xnio/AbstractIoFuture$State<TT;>;
            6   18     3  withWaiter  Lorg/xnio/AbstractIoFuture$State<TT;>;
            8   18     4        intr  Z
      Exception table:
        from    to  target  type
           8    13      15  any
    Signature: ()Lorg/xnio/IoFuture$Status;

  public org.xnio.IoFuture$Status await(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=16, args_size=3
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 436
            lload 1 /* time */
            lconst_0
            lcmp
            ifge 2
         1: .line 437
            lconst_0
            lstore 1 /* time */
         2: .line 439
      StackMap locals:
      StackMap stack:
            aload 3 /* timeUnit */
            lload 1 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 4 /* duration */
        start local 4 // long duration
         3: .line 440
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* now */
        start local 6 // long now
         4: .line 442
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 10 /* thread */
        start local 10 // java.lang.Thread thread
         5: .line 445
      StackMap locals: org.xnio.AbstractIoFuture long java.util.concurrent.TimeUnit long long top top java.lang.Thread
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 11 /* state */
        start local 11 // org.xnio.AbstractIoFuture$State state
         6: .line 446
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpne 7
            lload 4 /* duration */
            lconst_0
            lcmp
            ifne 8
         7: .line 447
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
         8: .line 449
      StackMap locals:
      StackMap stack:
            invokestatic org.xnio.Xnio.checkBlockingAllowed:()V
         9: .line 450
            aload 11 /* state */
            aload 10 /* thread */
            invokevirtual org.xnio.AbstractIoFuture$State.withWaiter:(Ljava/lang/Thread;)Lorg/xnio/AbstractIoFuture$State;
            astore 12 /* withWaiter */
        start local 12 // org.xnio.AbstractIoFuture$State withWaiter
        10: .line 451
            aload 0 /* this */
            aload 11 /* state */
            aload 12 /* withWaiter */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 5
        11: .line 452
            invokestatic java.lang.Thread.interrupted:()Z
            istore 13 /* intr */
        start local 13 // boolean intr
        12: .line 455
      StackMap locals: org.xnio.AbstractIoFuture$State int
      StackMap stack:
            aload 0 /* this */
            lload 4 /* duration */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        13: .line 456
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 14
            iconst_1
            istore 13 /* intr */
        14: .line 457
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 11 /* state */
        15: .line 458
            lload 4 /* duration */
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 8 /* tick */
        start local 8 // long tick
        16: lload 6 /* now */
            lsub
            lsub
            lstore 4 /* duration */
        17: .line 459
            lload 8 /* tick */
            lstore 6 /* now */
        18: .line 460
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpne 20
            lload 4 /* duration */
            lconst_0
        19: .line 454
            lcmp
            ifgt 12
        20: .line 461
      StackMap locals: org.xnio.AbstractIoFuture long java.util.concurrent.TimeUnit long long long java.lang.Thread org.xnio.AbstractIoFuture$State org.xnio.AbstractIoFuture$State int
      StackMap stack:
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            astore 15
        21: .line 463
            iload 13 /* intr */
            ifeq 22
            aload 10 /* thread */
            invokevirtual java.lang.Thread.interrupt:()V
        22: .line 461
      StackMap locals: org.xnio.AbstractIoFuture long java.util.concurrent.TimeUnit long long long java.lang.Thread org.xnio.AbstractIoFuture$State org.xnio.AbstractIoFuture$State int top org.xnio.IoFuture$Status
      StackMap stack:
            aload 15
            areturn
        end local 8 // long tick
        23: .line 462
      StackMap locals: org.xnio.AbstractIoFuture long java.util.concurrent.TimeUnit long long top top java.lang.Thread org.xnio.AbstractIoFuture$State org.xnio.AbstractIoFuture$State int
      StackMap stack: java.lang.Throwable
            astore 14
        24: .line 463
            iload 13 /* intr */
            ifeq 25
            aload 10 /* thread */
            invokevirtual java.lang.Thread.interrupt:()V
        25: .line 464
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 14
            athrow
        end local 13 // boolean intr
        end local 12 // org.xnio.AbstractIoFuture$State withWaiter
        end local 11 // org.xnio.AbstractIoFuture$State state
        end local 10 // java.lang.Thread thread
        end local 6 // long now
        end local 4 // long duration
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   26     0        this  Lorg/xnio/AbstractIoFuture<TT;>;
            0   26     1        time  J
            0   26     3    timeUnit  Ljava/util/concurrent/TimeUnit;
            3   26     4    duration  J
            4   26     6         now  J
           16   23     8        tick  J
            5   26    10      thread  Ljava/lang/Thread;
            6   26    11       state  Lorg/xnio/AbstractIoFuture$State<TT;>;
           10   26    12  withWaiter  Lorg/xnio/AbstractIoFuture$State<TT;>;
           12   26    13        intr  Z
      Exception table:
        from    to  target  type
          12    21      23  any
    Signature: (JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
    MethodParameters:
          Name  Flags
      time      
      timeUnit  final

  public org.xnio.IoFuture$Status awaitInterruptibly();
    descriptor: ()Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 474
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 1 /* thread */
        start local 1 // java.lang.Thread thread
         1: .line 477
      StackMap locals: java.lang.Thread
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* state */
        start local 2 // org.xnio.AbstractIoFuture$State state
         2: .line 478
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 4
         3: .line 479
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
         4: .line 481
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            invokestatic org.xnio.Xnio.checkBlockingAllowed:()V
         5: .line 482
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 6
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
         6: .line 483
      StackMap locals:
      StackMap stack:
            aload 2 /* state */
            aload 1 /* thread */
            invokevirtual org.xnio.AbstractIoFuture$State.withWaiter:(Ljava/lang/Thread;)Lorg/xnio/AbstractIoFuture$State;
            astore 3 /* withWaiter */
        start local 3 // org.xnio.AbstractIoFuture$State withWaiter
         7: .line 484
            aload 0 /* this */
            aload 2 /* state */
            aload 3 /* withWaiter */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 1
         8: .line 486
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 0 /* this */
            invokestatic java.util.concurrent.locks.LockSupport.park:(Ljava/lang/Object;)V
         9: .line 487
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 10
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        10: .line 488
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* state */
        11: .line 489
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 8
        12: .line 490
            aload 2 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
        end local 3 // org.xnio.AbstractIoFuture$State withWaiter
        end local 2 // org.xnio.AbstractIoFuture$State state
        end local 1 // java.lang.Thread thread
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lorg/xnio/AbstractIoFuture<TT;>;
            1   13     1      thread  Ljava/lang/Thread;
            2   13     2       state  Lorg/xnio/AbstractIoFuture$State<TT;>;
            7   13     3  withWaiter  Lorg/xnio/AbstractIoFuture$State<TT;>;
    Exceptions:
      throws java.lang.InterruptedException
    Signature: ()Lorg/xnio/IoFuture$Status;

  public org.xnio.IoFuture$Status awaitInterruptibly(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=13, args_size=3
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 500
            lload 1 /* time */
            lconst_0
            lcmp
            ifge 2
         1: .line 501
            lconst_0
            lstore 1 /* time */
         2: .line 503
      StackMap locals:
      StackMap stack:
            aload 3 /* timeUnit */
            lload 1 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 4 /* duration */
        start local 4 // long duration
         3: .line 504
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* now */
        start local 6 // long now
         4: .line 506
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 10 /* thread */
        start local 10 // java.lang.Thread thread
         5: .line 509
      StackMap locals: org.xnio.AbstractIoFuture long java.util.concurrent.TimeUnit long long top top java.lang.Thread
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 11 /* state */
        start local 11 // org.xnio.AbstractIoFuture$State state
         6: .line 510
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpne 7
            lload 4 /* duration */
            lconst_0
            lcmp
            ifne 8
         7: .line 511
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
         8: .line 513
      StackMap locals:
      StackMap stack:
            invokestatic org.xnio.Xnio.checkBlockingAllowed:()V
         9: .line 514
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 10
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        10: .line 515
      StackMap locals:
      StackMap stack:
            aload 11 /* state */
            aload 10 /* thread */
            invokevirtual org.xnio.AbstractIoFuture$State.withWaiter:(Ljava/lang/Thread;)Lorg/xnio/AbstractIoFuture$State;
            astore 12 /* withWaiter */
        start local 12 // org.xnio.AbstractIoFuture$State withWaiter
        11: .line 516
            aload 0 /* this */
            aload 11 /* state */
            aload 12 /* withWaiter */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 5
        12: .line 518
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 0 /* this */
            lload 4 /* duration */
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(Ljava/lang/Object;J)V
        13: .line 519
            invokestatic java.lang.Thread.interrupted:()Z
            ifeq 14
            new java.lang.InterruptedException
            dup
            invokespecial java.lang.InterruptedException.<init>:()V
            athrow
        14: .line 520
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 11 /* state */
        15: .line 521
            lload 4 /* duration */
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 8 /* tick */
        start local 8 // long tick
        16: lload 6 /* now */
            lsub
            lsub
            lstore 4 /* duration */
        17: .line 522
            lload 8 /* tick */
            lstore 6 /* now */
        18: .line 523
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpne 20
            lload 4 /* duration */
            lconst_0
        19: .line 517
            lcmp
            ifgt 12
        20: .line 524
      StackMap locals: org.xnio.AbstractIoFuture long java.util.concurrent.TimeUnit long long long java.lang.Thread org.xnio.AbstractIoFuture$State org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 11 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
        end local 12 // org.xnio.AbstractIoFuture$State withWaiter
        end local 11 // org.xnio.AbstractIoFuture$State state
        end local 10 // java.lang.Thread thread
        end local 8 // long tick
        end local 6 // long now
        end local 4 // long duration
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0        this  Lorg/xnio/AbstractIoFuture<TT;>;
            0   21     1        time  J
            0   21     3    timeUnit  Ljava/util/concurrent/TimeUnit;
            3   21     4    duration  J
            4   21     6         now  J
           16   21     8        tick  J
            5   21    10      thread  Ljava/lang/Thread;
            6   21    11       state  Lorg/xnio/AbstractIoFuture$State<TT;>;
           11   21    12  withWaiter  Lorg/xnio/AbstractIoFuture$State<TT;>;
    Exceptions:
      throws java.lang.InterruptedException
    Signature: (JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
    MethodParameters:
          Name  Flags
      time      
      timeUnit  final

  public T get();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 535
            invokestatic org.xnio.AbstractIoFuture.$SWITCH_TABLE$org$xnio$IoFuture$Status:()[I
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.await:()Lorg/xnio/IoFuture$Status;
            invokevirtual org.xnio.IoFuture$Status.ordinal:()I
            iaload
            tableswitch { // 2 - 4
                    2: 1
                    3: 3
                    4: 2
              default: 4
          }
         1: .line 536
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            invokevirtual org.xnio.AbstractIoFuture$State.getResult:()Ljava/lang/Object;
            areturn
         2: .line 537
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            invokevirtual org.xnio.AbstractIoFuture$State.getException:()Ljava/io/IOException;
            athrow
         3: .line 538
      StackMap locals:
      StackMap stack:
            getstatic org.xnio._private.Messages.futureMsg:Lorg/xnio/_private/Messages;
            invokeinterface org.xnio._private.Messages.opCancelled:()Ljava/util/concurrent/CancellationException;
            athrow
         4: .line 539
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/xnio/AbstractIoFuture<TT;>;
    Exceptions:
      throws java.io.IOException, java.util.concurrent.CancellationException
    Signature: ()TT;

  public T getInterruptibly();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 548
            invokestatic org.xnio.AbstractIoFuture.$SWITCH_TABLE$org$xnio$IoFuture$Status:()[I
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.awaitInterruptibly:()Lorg/xnio/IoFuture$Status;
            invokevirtual org.xnio.IoFuture$Status.ordinal:()I
            iaload
            tableswitch { // 2 - 4
                    2: 1
                    3: 3
                    4: 2
              default: 4
          }
         1: .line 549
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            invokevirtual org.xnio.AbstractIoFuture$State.getResult:()Ljava/lang/Object;
            areturn
         2: .line 550
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            invokevirtual org.xnio.AbstractIoFuture$State.getException:()Ljava/io/IOException;
            athrow
         3: .line 551
      StackMap locals:
      StackMap stack:
            getstatic org.xnio._private.Messages.futureMsg:Lorg/xnio/_private/Messages;
            invokeinterface org.xnio._private.Messages.opCancelled:()Ljava/util/concurrent/CancellationException;
            athrow
         4: .line 552
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/xnio/AbstractIoFuture<TT;>;
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException, java.util.concurrent.CancellationException
    Signature: ()TT;

  public java.io.IOException getException();
    descriptor: ()Ljava/io/IOException;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 560
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            invokevirtual org.xnio.AbstractIoFuture$State.getException:()Ljava/io/IOException;
            areturn
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AbstractIoFuture<TT;>;
    Exceptions:
      throws java.lang.IllegalStateException

  public <A> org.xnio.IoFuture<T> addNotifier(org.xnio.IoFuture$Notifier<? super T, A>, A);
    descriptor: (Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // org.xnio.IoFuture$Notifier notifier
        start local 2 // java.lang.Object attachment
         0: .line 569
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 3 /* oldState */
        start local 3 // org.xnio.AbstractIoFuture$State oldState
         1: .line 570
            aload 3 /* oldState */
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getNotifierExecutor:()Ljava/util/concurrent/Executor;
            aload 0 /* this */
            aload 1 /* notifier */
            aload 2 /* attachment */
            invokevirtual org.xnio.AbstractIoFuture$State.withNotifier:(Ljava/util/concurrent/Executor;Lorg/xnio/AbstractIoFuture;Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/AbstractIoFuture$State;
            astore 4 /* newState */
        start local 4 // org.xnio.AbstractIoFuture$State newState
         2: .line 571
            aload 0 /* this */
            aload 3 /* oldState */
            aload 4 /* newState */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 0
         3: .line 572
            aload 0 /* this */
            areturn
        end local 4 // org.xnio.AbstractIoFuture$State newState
        end local 3 // org.xnio.AbstractIoFuture$State oldState
        end local 2 // java.lang.Object attachment
        end local 1 // org.xnio.IoFuture$Notifier notifier
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/xnio/AbstractIoFuture<TT;>;
            0    4     1    notifier  Lorg/xnio/IoFuture$Notifier<-TT;TA;>;
            0    4     2  attachment  TA;
            1    4     3    oldState  Lorg/xnio/AbstractIoFuture$State<TT;>;
            2    4     4    newState  Lorg/xnio/AbstractIoFuture$State<TT;>;
    Signature: <A:Ljava/lang/Object;>(Lorg/xnio/IoFuture$Notifier<-TT;TA;>;TA;)Lorg/xnio/IoFuture<TT;>;
    MethodParameters:
            Name  Flags
      notifier    final
      attachment  final

  protected boolean setException(java.io.IOException);
    descriptor: (Ljava/io/IOException;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // java.io.IOException exception
         0: .line 583
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* oldState */
        start local 2 // org.xnio.AbstractIoFuture$State oldState
         1: .line 584
            aload 2 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 3
         2: .line 585
            iconst_0
            ireturn
         3: .line 587
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            new org.xnio.AbstractIoFuture$FailedState
            dup
            aload 1 /* exception */
            invokespecial org.xnio.AbstractIoFuture$FailedState.<init>:(Ljava/io/IOException;)V
            astore 3 /* newState */
        start local 3 // org.xnio.AbstractIoFuture$State newState
         4: .line 588
            goto 8
         5: .line 589
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* oldState */
         6: .line 590
            aload 2 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 8
         7: .line 591
            iconst_0
            ireturn
         8: .line 588
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* oldState */
            aload 3 /* newState */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 5
        end local 3 // org.xnio.AbstractIoFuture$State newState
         9: .line 595
            aload 2 /* oldState */
            aload 0 /* this */
            aload 1 /* exception */
            invokevirtual org.xnio.AbstractIoFuture$State.notifyFailed:(Lorg/xnio/AbstractIoFuture;Ljava/io/IOException;)V
        10: .line 596
            iconst_1
            ireturn
        end local 2 // org.xnio.AbstractIoFuture$State oldState
        end local 1 // java.io.IOException exception
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/xnio/AbstractIoFuture<TT;>;
            0   11     1  exception  Ljava/io/IOException;
            1   11     2   oldState  Lorg/xnio/AbstractIoFuture$State<TT;>;
            4    9     3   newState  Lorg/xnio/AbstractIoFuture$State<TT;>;
    MethodParameters:
           Name  Flags
      exception  

  protected boolean setResult();
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // java.lang.Object result
         0: .line 607
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* oldState */
        start local 2 // org.xnio.AbstractIoFuture$State oldState
         1: .line 608
            aload 2 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 3
         2: .line 609
            iconst_0
            ireturn
         3: .line 611
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            new org.xnio.AbstractIoFuture$CompleteState
            dup
            aload 1 /* result */
            invokespecial org.xnio.AbstractIoFuture$CompleteState.<init>:(Ljava/lang/Object;)V
            astore 3 /* newState */
        start local 3 // org.xnio.AbstractIoFuture$State newState
         4: .line 612
            goto 8
         5: .line 613
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* oldState */
         6: .line 614
            aload 2 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 8
         7: .line 615
            iconst_0
            ireturn
         8: .line 612
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* oldState */
            aload 3 /* newState */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 5
        end local 3 // org.xnio.AbstractIoFuture$State newState
         9: .line 619
            aload 2 /* oldState */
            aload 0 /* this */
            aload 1 /* result */
            invokevirtual org.xnio.AbstractIoFuture$State.notifyDone:(Lorg/xnio/AbstractIoFuture;Ljava/lang/Object;)V
        10: .line 620
            iconst_1
            ireturn
        end local 2 // org.xnio.AbstractIoFuture$State oldState
        end local 1 // java.lang.Object result
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/xnio/AbstractIoFuture<TT;>;
            0   11     1    result  TT;
            1   11     2  oldState  Lorg/xnio/AbstractIoFuture$State<TT;>;
            4    9     3  newState  Lorg/xnio/AbstractIoFuture$State<TT;>;
    Signature: (TT;)Z
    MethodParameters:
        Name  Flags
      result  

  protected boolean setCancelled();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 630
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 1 /* oldState */
        start local 1 // org.xnio.AbstractIoFuture$State oldState
         1: .line 631
            aload 1 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 3
         2: .line 632
            iconst_0
            ireturn
         3: .line 635
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            getstatic org.xnio.AbstractIoFuture.ST_CANCELLED:Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* newState */
        start local 2 // org.xnio.AbstractIoFuture$State newState
         4: .line 636
            goto 8
         5: .line 637
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 1 /* oldState */
         6: .line 638
            aload 1 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpeq 8
         7: .line 639
            iconst_0
            ireturn
         8: .line 636
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* oldState */
            aload 2 /* newState */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 5
        end local 2 // org.xnio.AbstractIoFuture$State newState
         9: .line 643
            aload 1 /* oldState */
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture$State.notifyCancelled:(Lorg/xnio/AbstractIoFuture;)V
        10: .line 644
            iconst_1
            ireturn
        end local 1 // org.xnio.AbstractIoFuture$State oldState
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lorg/xnio/AbstractIoFuture<TT;>;
            1   11     1  oldState  Lorg/xnio/AbstractIoFuture$State<TT;>;
            4    9     2  newState  Lorg/xnio/AbstractIoFuture$State<TT;>;

  public org.xnio.IoFuture<T> cancel();
    descriptor: ()Lorg/xnio/IoFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 657
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 1 /* state */
        start local 1 // org.xnio.AbstractIoFuture$State state
         1: .line 658
            aload 1 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpne 2
            aload 1 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.cancelRequested:()Z
            ifeq 3
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
         2: aload 0 /* this */
            areturn
         3: .line 659
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* state */
            new org.xnio.AbstractIoFuture$CancelRequestedState
            dup
            aload 1 /* state */
            invokespecial org.xnio.AbstractIoFuture$CancelRequestedState.<init>:(Lorg/xnio/AbstractIoFuture$State;)V
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 0
         4: .line 660
            aload 1 /* state */
            invokevirtual org.xnio.AbstractIoFuture$State.cancel:()V
         5: .line 661
            aload 0 /* this */
            areturn
        end local 1 // org.xnio.AbstractIoFuture$State state
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/xnio/AbstractIoFuture<TT;>;
            1    6     1  state  Lorg/xnio/AbstractIoFuture$State<TT;>;
    Signature: ()Lorg/xnio/IoFuture<TT;>;

  protected void addCancelHandler(org.xnio.Cancellable);
    descriptor: (Lorg/xnio/Cancellable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // org.xnio.Cancellable cancellable
         0: .line 673
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getState:()Lorg/xnio/AbstractIoFuture$State;
            astore 2 /* oldState */
        start local 2 // org.xnio.AbstractIoFuture$State oldState
         1: .line 674
            aload 2 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.getStatus:()Lorg/xnio/IoFuture$Status;
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            if_acmpne 2
            aload 2 /* oldState */
            invokevirtual org.xnio.AbstractIoFuture$State.cancelRequested:()Z
            ifeq 6
         2: .line 676
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 1 /* cancellable */
            invokeinterface org.xnio.Cancellable.cancel:()Lorg/xnio/Cancellable;
            pop
         3: .line 677
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: pop
         5: .line 679
      StackMap locals:
      StackMap stack:
            return
         6: .line 681
      StackMap locals:
      StackMap stack:
            aload 2 /* oldState */
            aload 1 /* cancellable */
            invokevirtual org.xnio.AbstractIoFuture$State.withCancelHandler:(Lorg/xnio/Cancellable;)Lorg/xnio/AbstractIoFuture$State;
            astore 3 /* newState */
        start local 3 // org.xnio.AbstractIoFuture$State newState
         7: .line 682
            aload 2 /* oldState */
            aload 3 /* newState */
            if_acmpne 8
            return
         8: .line 683
      StackMap locals: org.xnio.AbstractIoFuture$State
      StackMap stack:
            aload 0 /* this */
            aload 2 /* oldState */
            aload 3 /* newState */
            invokevirtual org.xnio.AbstractIoFuture.compareAndSetState:(Lorg/xnio/AbstractIoFuture$State;Lorg/xnio/AbstractIoFuture$State;)Z
            ifeq 0
         9: .line 684
            return
        end local 3 // org.xnio.AbstractIoFuture$State newState
        end local 2 // org.xnio.AbstractIoFuture$State oldState
        end local 1 // org.xnio.Cancellable cancellable
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lorg/xnio/AbstractIoFuture<TT;>;
            0   10     1  cancellable  Lorg/xnio/Cancellable;
            1   10     2     oldState  Lorg/xnio/AbstractIoFuture$State<TT;>;
            7   10     3     newState  Lorg/xnio/AbstractIoFuture$State<TT;>;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      cancellable  final

  protected void runNotifier(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.xnio.AbstractIoFuture this
        start local 1 // java.lang.Runnable runnable
         0: .line 693
            aload 0 /* this */
            invokevirtual org.xnio.AbstractIoFuture.getNotifierExecutor:()Ljava/util/concurrent/Executor;
            aload 1 /* runnable */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         1: .line 694
            return
        end local 1 // java.lang.Runnable runnable
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/xnio/AbstractIoFuture<TT;>;
            0    2     1  runnable  Ljava/lang/Runnable;
    MethodParameters:
          Name  Flags
      runnable  final

  protected java.util.concurrent.Executor getNotifierExecutor();
    descriptor: ()Ljava/util/concurrent/Executor;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.AbstractIoFuture this
         0: .line 703
            invokestatic org.xnio.IoUtils.directExecutor:()Ljava/util/concurrent/Executor;
            areturn
        end local 0 // org.xnio.AbstractIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AbstractIoFuture<TT;>;

  public org.xnio.Cancellable cancel();
    descriptor: ()Lorg/xnio/Cancellable;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.xnio.AbstractIoFuture.cancel:()Lorg/xnio/IoFuture;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static int[] $SWITCH_TABLE$org$xnio$IoFuture$Status();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 35
            getstatic org.xnio.AbstractIoFuture.$SWITCH_TABLE$org$xnio$IoFuture$Status:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.xnio.IoFuture$Status.values:()[Lorg/xnio/IoFuture$Status;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.xnio.IoFuture$Status.CANCELLED:Lorg/xnio/IoFuture$Status;
            invokevirtual org.xnio.IoFuture$Status.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.xnio.IoFuture$Status.DONE:Lorg/xnio/IoFuture$Status;
            invokevirtual org.xnio.IoFuture$Status.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.xnio.IoFuture$Status.FAILED:Lorg/xnio/IoFuture$Status;
            invokevirtual org.xnio.IoFuture$Status.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.xnio.IoFuture$Status.WAITING:Lorg/xnio/IoFuture$Status;
            invokevirtual org.xnio.IoFuture$Status.ordinal:()I
            iconst_1
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic org.xnio.AbstractIoFuture.$SWITCH_TABLE$org$xnio$IoFuture$Status:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lorg/xnio/IoFuture<TT;>;
SourceFile: "AbstractIoFuture.java"
NestMembers:
  org.xnio.AbstractIoFuture$CancelRequestedState  org.xnio.AbstractIoFuture$CancellableState  org.xnio.AbstractIoFuture$CancelledState  org.xnio.AbstractIoFuture$CompleteState  org.xnio.AbstractIoFuture$FailedState  org.xnio.AbstractIoFuture$InitialState  org.xnio.AbstractIoFuture$NotifierRunnable  org.xnio.AbstractIoFuture$NotifierState  org.xnio.AbstractIoFuture$State  org.xnio.AbstractIoFuture$WaiterState
InnerClasses:
  final CancelRequestedState = org.xnio.AbstractIoFuture$CancelRequestedState of org.xnio.AbstractIoFuture
  final CancellableState = org.xnio.AbstractIoFuture$CancellableState of org.xnio.AbstractIoFuture
  final CancelledState = org.xnio.AbstractIoFuture$CancelledState of org.xnio.AbstractIoFuture
  final CompleteState = org.xnio.AbstractIoFuture$CompleteState of org.xnio.AbstractIoFuture
  final FailedState = org.xnio.AbstractIoFuture$FailedState of org.xnio.AbstractIoFuture
  final InitialState = org.xnio.AbstractIoFuture$InitialState of org.xnio.AbstractIoFuture
  NotifierRunnable = org.xnio.AbstractIoFuture$NotifierRunnable of org.xnio.AbstractIoFuture
  final NotifierState = org.xnio.AbstractIoFuture$NotifierState of org.xnio.AbstractIoFuture
  abstract State = org.xnio.AbstractIoFuture$State of org.xnio.AbstractIoFuture
  final WaiterState = org.xnio.AbstractIoFuture$WaiterState of org.xnio.AbstractIoFuture
  public abstract Notifier = org.xnio.IoFuture$Notifier of org.xnio.IoFuture
  public final Status = org.xnio.IoFuture$Status of org.xnio.IoFuture