class org.xnio.IoUtils$CastingIoFuture<O, I> implements org.xnio.IoFuture<O>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.xnio.IoUtils$CastingIoFuture
  super_class: java.lang.Object
{
  private final org.xnio.IoFuture<I> parent;
    descriptor: Lorg/xnio/IoFuture;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/xnio/IoFuture<TI;>;

  private final java.lang.Class<O> type;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<TO;>;

  private void <init>(org.xnio.IoFuture<I>, java.lang.Class<O>);
    descriptor: (Lorg/xnio/IoFuture;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
        start local 1 // org.xnio.IoFuture parent
        start local 2 // java.lang.Class type
         0: .line 529
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 530
            aload 0 /* this */
            aload 1 /* parent */
            putfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
         2: .line 531
            aload 0 /* this */
            aload 2 /* type */
            putfield org.xnio.IoUtils$CastingIoFuture.type:Ljava/lang/Class;
         3: .line 532
            return
        end local 2 // java.lang.Class type
        end local 1 // org.xnio.IoFuture parent
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
            0    4     1  parent  Lorg/xnio/IoFuture<TI;>;
            0    4     2    type  Ljava/lang/Class<TO;>;
    Signature: (Lorg/xnio/IoFuture<TI;>;Ljava/lang/Class<TO;>;)V
    MethodParameters:
        Name  Flags
      parent  final
      type    final

  public org.xnio.IoFuture<O> cancel();
    descriptor: ()Lorg/xnio/IoFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
         0: .line 535
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.cancel:()Lorg/xnio/IoFuture;
            pop
         1: .line 536
            aload 0 /* this */
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    Signature: ()Lorg/xnio/IoFuture<TO;>;

  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.IoUtils$CastingIoFuture this
         0: .line 540
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.getStatus:()Lorg/xnio/IoFuture$Status;
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    Signature: ()Lorg/xnio/IoFuture$Status;

  public org.xnio.IoFuture$Status await();
    descriptor: ()Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
         0: .line 544
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.await:()Lorg/xnio/IoFuture$Status;
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    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=4, locals=4, args_size=3
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 548
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            lload 1 /* time */
            aload 3 /* timeUnit */
            invokeinterface org.xnio.IoFuture.await:(JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
            areturn
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
            0    1     1      time  J
            0    1     3  timeUnit  Ljava/util/concurrent/TimeUnit;
    Signature: (JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
    MethodParameters:
          Name  Flags
      time      final
      timeUnit  final

  public org.xnio.IoFuture$Status awaitInterruptibly();
    descriptor: ()Lorg/xnio/IoFuture$Status;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
         0: .line 552
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.awaitInterruptibly:()Lorg/xnio/IoFuture$Status;
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    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=4, locals=4, args_size=3
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 556
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            lload 1 /* time */
            aload 3 /* timeUnit */
            invokeinterface org.xnio.IoFuture.awaitInterruptibly:(JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
            areturn
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
            0    1     1      time  J
            0    1     3  timeUnit  Ljava/util/concurrent/TimeUnit;
    Exceptions:
      throws java.lang.InterruptedException
    Signature: (JLjava/util/concurrent/TimeUnit;)Lorg/xnio/IoFuture$Status;
    MethodParameters:
          Name  Flags
      time      final
      timeUnit  final

  public O get();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
         0: .line 560
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.type:Ljava/lang/Class;
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.get:()Ljava/lang/Object;
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    Exceptions:
      throws java.io.IOException, java.util.concurrent.CancellationException
    Signature: ()TO;

  public O getInterruptibly();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
         0: .line 564
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.type:Ljava/lang/Class;
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.getInterruptibly:()Ljava/lang/Object;
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    Exceptions:
      throws java.io.IOException, java.lang.InterruptedException, java.util.concurrent.CancellationException
    Signature: ()TO;

  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.IoUtils$CastingIoFuture this
         0: .line 568
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            invokeinterface org.xnio.IoFuture.getException:()Ljava/io/IOException;
            areturn
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
    Exceptions:
      throws java.lang.IllegalStateException

  public <A> org.xnio.IoFuture<O> addNotifier(org.xnio.IoFuture$Notifier<? super O, A>, A);
    descriptor: (Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.xnio.IoUtils$CastingIoFuture this
        start local 1 // org.xnio.IoFuture$Notifier notifier
        start local 2 // java.lang.Object attachment
         0: .line 572
            aload 0 /* this */
            getfield org.xnio.IoUtils$CastingIoFuture.parent:Lorg/xnio/IoFuture;
            new org.xnio.IoUtils$CastingIoFuture$1
            dup
            aload 0 /* this */
            aload 1 /* notifier */
            invokespecial org.xnio.IoUtils$CastingIoFuture$1.<init>:(Lorg/xnio/IoUtils$CastingIoFuture;Lorg/xnio/IoFuture$Notifier;)V
         1: .line 576
            aload 2 /* attachment */
         2: .line 572
            invokeinterface org.xnio.IoFuture.addNotifier:(Lorg/xnio/IoFuture$Notifier;Ljava/lang/Object;)Lorg/xnio/IoFuture;
            pop
         3: .line 577
            aload 0 /* this */
            areturn
        end local 2 // java.lang.Object attachment
        end local 1 // org.xnio.IoFuture$Notifier notifier
        end local 0 // org.xnio.IoUtils$CastingIoFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/xnio/IoUtils$CastingIoFuture<TO;TI;>;
            0    4     1    notifier  Lorg/xnio/IoFuture$Notifier<-TO;TA;>;
            0    4     2  attachment  TA;
    Signature: <A:Ljava/lang/Object;>(Lorg/xnio/IoFuture$Notifier<-TO;TA;>;TA;)Lorg/xnio/IoFuture<TO;>;
    MethodParameters:
            Name  Flags
      notifier    final
      attachment  final

  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.IoUtils$CastingIoFuture.cancel:()Lorg/xnio/IoFuture;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <O:Ljava/lang/Object;I:Ljava/lang/Object;>Ljava/lang/Object;Lorg/xnio/IoFuture<TO;>;
SourceFile: "IoUtils.java"
NestHost: org.xnio.IoUtils
InnerClasses:
  public abstract Notifier = org.xnio.IoFuture$Notifier of org.xnio.IoFuture
  public final Status = org.xnio.IoFuture$Status of org.xnio.IoFuture
  private CastingIoFuture = org.xnio.IoUtils$CastingIoFuture of org.xnio.IoUtils
  org.xnio.IoUtils$CastingIoFuture$1