public final class org.xnio.channels.Channels
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.xnio.channels.Channels
  super_class: java.lang.Object
{
  private static final java.nio.channels.FileChannel NULL_FILE_CHANNEL;
    descriptor: Ljava/nio/channels/FileChannel;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.nio.ByteBuffer DRAIN_BUFFER;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 895
            sipush 16384
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            putstatic org.xnio.channels.Channels.DRAIN_BUFFER:Ljava/nio/ByteBuffer;
         1: .line 1093
            new org.xnio.channels.Channels$1
            dup
            invokespecial org.xnio.channels.Channels$1.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.nio.channels.FileChannel
            putstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
         2: .line 1107
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.channels.Channels this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            return
        end local 0 // org.xnio.channels.Channels this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/xnio/channels/Channels;

  public static void flushBlocking(org.xnio.channels.SuspendableWriteChannel);
    descriptor: (Lorg/xnio/channels/SuspendableWriteChannel;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.channels.SuspendableWriteChannel channel
         0: .line 63
            goto 2
         1: .line 64
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.awaitWritable:()V
         2: .line 63
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.flush:()Z
            ifeq 1
         3: .line 66
            return
        end local 0 // org.xnio.channels.SuspendableWriteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  channel  Lorg/xnio/channels/SuspendableWriteChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  

  public static boolean flushBlocking(org.xnio.channels.SuspendableWriteChannel, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/SuspendableWriteChannel;JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=3
        start local 0 // org.xnio.channels.SuspendableWriteChannel channel
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 82
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.flush:()Z
            ifeq 2
         1: .line 83
            iconst_1
            ireturn
         2: .line 85
      StackMap locals:
      StackMap stack:
            aload 3 /* unit */
            lload 1 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 4 /* remaining */
        start local 4 // long remaining
         3: .line 86
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* now */
        start local 6 // long now
         4: .line 89
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            lload 4 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.SuspendableWriteChannel.awaitWritable:(JLjava/util/concurrent/TimeUnit;)V
         5: .line 92
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.flush:()Z
            ifeq 7
         6: .line 93
            iconst_1
            ireturn
         7: .line 97
      StackMap locals:
      StackMap stack:
            lload 4 /* remaining */
            lload 6 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 6 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            dup2
            lstore 4 /* remaining */
            lconst_0
         8: .line 87
            lcmp
            ifgt 4
         9: .line 98
            iconst_0
            ireturn
        end local 6 // long now
        end local 4 // long remaining
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long time
        end local 0 // org.xnio.channels.SuspendableWriteChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0    channel  Lorg/xnio/channels/SuspendableWriteChannel;
            0   10     1       time  J
            0   10     3       unit  Ljava/util/concurrent/TimeUnit;
            3   10     4  remaining  J
            4   10     6        now  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      time     
      unit     

  public static void shutdownWritesBlocking(org.xnio.channels.SuspendableWriteChannel);
    descriptor: (Lorg/xnio/channels/SuspendableWriteChannel;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.channels.SuspendableWriteChannel channel
         0: .line 111
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.shutdownWrites:()V
         1: .line 112
            aload 0 /* channel */
            invokestatic org.xnio.channels.Channels.flushBlocking:(Lorg/xnio/channels/SuspendableWriteChannel;)V
         2: .line 113
            return
        end local 0 // org.xnio.channels.SuspendableWriteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  channel  Lorg/xnio/channels/SuspendableWriteChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  

  public static boolean shutdownWritesBlocking(org.xnio.channels.SuspendableWriteChannel, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/SuspendableWriteChannel;JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.xnio.channels.SuspendableWriteChannel channel
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 128
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.shutdownWrites:()V
         1: .line 129
            aload 0 /* channel */
            lload 1 /* time */
            aload 3 /* unit */
            invokestatic org.xnio.channels.Channels.flushBlocking:(Lorg/xnio/channels/SuspendableWriteChannel;JLjava/util/concurrent/TimeUnit;)Z
            ireturn
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long time
        end local 0 // org.xnio.channels.SuspendableWriteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  channel  Lorg/xnio/channels/SuspendableWriteChannel;
            0    2     1     time  J
            0    2     3     unit  Ljava/util/concurrent/TimeUnit;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      time     
      unit     

  public static <C extends java.nio.channels.WritableByteChannel, org.xnio.channels.SuspendableWriteChannel> int writeBlocking(C, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.nio.channels.WritableByteChannel channel
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 145
            iconst_0
            istore 2 /* t */
        start local 2 // int t
         1: .line 146
            goto 7
         2: .line 147
      StackMap locals: int
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface java.nio.channels.WritableByteChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 3 /* res */
        start local 3 // int res
         3: .line 148
            iload 3 /* res */
            ifne 6
         4: .line 149
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableWriteChannel
            invokeinterface org.xnio.channels.SuspendableWriteChannel.awaitWritable:()V
         5: .line 150
            goto 7
         6: .line 151
      StackMap locals: int
      StackMap stack:
            iload 2 /* t */
            iload 3 /* res */
            iadd
            istore 2 /* t */
        end local 3 // int res
         7: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 2
         8: .line 154
            iload 2 /* t */
            ireturn
        end local 2 // int t
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // java.nio.channels.WritableByteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0  channel  TC;
            0    9     1   buffer  Ljava/nio/ByteBuffer;
            1    9     2        t  I
            3    7     3      res  I
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/WritableByteChannel;:Lorg/xnio/channels/SuspendableWriteChannel;>(TC;Ljava/nio/ByteBuffer;)I
    MethodParameters:
         Name  Flags
      channel  
      buffer   

  public static <C extends java.nio.channels.WritableByteChannel, org.xnio.channels.SuspendableWriteChannel> int writeBlocking(C, java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=11, args_size=4
        start local 0 // java.nio.channels.WritableByteChannel channel
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 171
            aload 4 /* unit */
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 5 /* remaining */
        start local 5 // long remaining
         1: .line 172
            invokestatic java.lang.System.nanoTime:()J
            lstore 7 /* now */
        start local 7 // long now
         2: .line 173
            iconst_0
            istore 9 /* t */
        start local 9 // int t
         3: .line 174
            goto 10
         4: .line 175
      StackMap locals: long long int
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface java.nio.channels.WritableByteChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 10 /* res */
        start local 10 // int res
         5: .line 176
            iload 10 /* res */
            ifne 9
         6: .line 177
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableWriteChannel
            lload 5 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.SuspendableWriteChannel.awaitWritable:(JLjava/util/concurrent/TimeUnit;)V
         7: .line 178
            lload 5 /* remaining */
            lload 7 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 7 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 5 /* remaining */
         8: .line 179
            goto 10
         9: .line 180
      StackMap locals: int
      StackMap stack:
            iload 9 /* t */
            iload 10 /* res */
            iadd
            istore 9 /* t */
        end local 10 // int res
        10: .line 174
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 11
            lload 5 /* remaining */
            lconst_0
            lcmp
            ifgt 4
        11: .line 183
      StackMap locals:
      StackMap stack:
            iload 9 /* t */
            ireturn
        end local 9 // int t
        end local 7 // long now
        end local 5 // long remaining
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long time
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // java.nio.channels.WritableByteChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0    channel  TC;
            0   12     1     buffer  Ljava/nio/ByteBuffer;
            0   12     2       time  J
            0   12     4       unit  Ljava/util/concurrent/TimeUnit;
            1   12     5  remaining  J
            2   12     7        now  J
            3   12     9          t  I
            5   10    10        res  I
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/WritableByteChannel;:Lorg/xnio/channels/SuspendableWriteChannel;>(TC;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)I
    MethodParameters:
         Name  Flags
      channel  
      buffer   
      time     
      unit     

  public static <C extends java.nio.channels.GatheringByteChannel, org.xnio.channels.SuspendableWriteChannel> long writeBlocking(C, java.nio.ByteBuffer[], int, );
    descriptor: (Ljava/nio/channels/GatheringByteChannel;[Ljava/nio/ByteBuffer;II)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // java.nio.channels.GatheringByteChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
         0: .line 200
            lconst_0
            lstore 4 /* t */
        start local 4 // long t
         1: .line 201
            goto 7
         2: .line 202
      StackMap locals: long
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface java.nio.channels.GatheringByteChannel.write:([Ljava/nio/ByteBuffer;II)J
            lstore 6 /* res */
        start local 6 // long res
         3: .line 203
            lload 6 /* res */
            lconst_0
            lcmp
            ifne 6
         4: .line 204
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableWriteChannel
            invokeinterface org.xnio.channels.SuspendableWriteChannel.awaitWritable:()V
         5: .line 205
            goto 7
         6: .line 206
      StackMap locals: long
      StackMap stack:
            lload 4 /* t */
            lload 6 /* res */
            ladd
            lstore 4 /* t */
        end local 6 // long res
         7: .line 201
      StackMap locals:
      StackMap stack:
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokestatic org.xnio.Buffers.hasRemaining:([Ljava/nio/Buffer;II)Z
            ifne 2
         8: .line 209
            lload 4 /* t */
            lreturn
        end local 4 // long t
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // java.nio.channels.GatheringByteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0  channel  TC;
            0    9     1  buffers  [Ljava/nio/ByteBuffer;
            0    9     2     offs  I
            0    9     3      len  I
            1    9     4        t  J
            3    7     6      res  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/GatheringByteChannel;:Lorg/xnio/channels/SuspendableWriteChannel;>(TC;[Ljava/nio/ByteBuffer;II)J
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      

  public static <C extends java.nio.channels.GatheringByteChannel, org.xnio.channels.SuspendableWriteChannel> long writeBlocking(C, java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/nio/channels/GatheringByteChannel;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=15, args_size=6
        start local 0 // java.nio.channels.GatheringByteChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
        start local 4 // long time
        start local 6 // java.util.concurrent.TimeUnit unit
         0: .line 228
            aload 6 /* unit */
            lload 4 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 7 /* remaining */
        start local 7 // long remaining
         1: .line 229
            invokestatic java.lang.System.nanoTime:()J
            lstore 9 /* now */
        start local 9 // long now
         2: .line 230
            lconst_0
            lstore 11 /* t */
        start local 11 // long t
         3: .line 231
            goto 10
         4: .line 232
      StackMap locals: long long long
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface java.nio.channels.GatheringByteChannel.write:([Ljava/nio/ByteBuffer;II)J
            lstore 13 /* res */
        start local 13 // long res
         5: .line 233
            lload 13 /* res */
            lconst_0
            lcmp
            ifne 9
         6: .line 234
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableWriteChannel
            lload 7 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.SuspendableWriteChannel.awaitWritable:(JLjava/util/concurrent/TimeUnit;)V
         7: .line 235
            lload 7 /* remaining */
            lload 9 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 9 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 7 /* remaining */
         8: .line 236
            goto 10
         9: .line 237
      StackMap locals: long
      StackMap stack:
            lload 11 /* t */
            lload 13 /* res */
            ladd
            lstore 11 /* t */
        end local 13 // long res
        10: .line 231
      StackMap locals:
      StackMap stack:
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokestatic org.xnio.Buffers.hasRemaining:([Ljava/nio/Buffer;II)Z
            ifeq 11
            lload 7 /* remaining */
            lconst_0
            lcmp
            ifgt 4
        11: .line 240
      StackMap locals:
      StackMap stack:
            lload 11 /* t */
            lreturn
        end local 11 // long t
        end local 9 // long now
        end local 7 // long remaining
        end local 6 // java.util.concurrent.TimeUnit unit
        end local 4 // long time
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // java.nio.channels.GatheringByteChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0    channel  TC;
            0   12     1    buffers  [Ljava/nio/ByteBuffer;
            0   12     2       offs  I
            0   12     3        len  I
            0   12     4       time  J
            0   12     6       unit  Ljava/util/concurrent/TimeUnit;
            1   12     7  remaining  J
            2   12     9        now  J
            3   12    11          t  J
            5   10    13        res  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/GatheringByteChannel;:Lorg/xnio/channels/SuspendableWriteChannel;>(TC;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)J
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      
      time     
      unit     

  public static <C extends org.xnio.channels.WritableMessageChannel> void sendBlocking(C, java.nio.ByteBuffer);
    descriptor: (Lorg/xnio/channels/WritableMessageChannel;Ljava/nio/ByteBuffer;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.xnio.channels.WritableMessageChannel channel
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 253
            goto 2
         1: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.WritableMessageChannel.awaitWritable:()V
         2: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface org.xnio.channels.WritableMessageChannel.send:(Ljava/nio/ByteBuffer;)Z
            ifeq 1
         3: .line 256
            return
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // org.xnio.channels.WritableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  channel  TC;
            0    4     1   buffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/WritableMessageChannel;>(TC;Ljava/nio/ByteBuffer;)V
    MethodParameters:
         Name  Flags
      channel  
      buffer   

  public static <C extends org.xnio.channels.WritableMessageChannel> boolean sendBlocking(C, java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/WritableMessageChannel;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=9, args_size=4
        start local 0 // org.xnio.channels.WritableMessageChannel channel
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 272
            aload 4 /* unit */
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 5 /* remaining */
        start local 5 // long remaining
         1: .line 273
            invokestatic java.lang.System.nanoTime:()J
            lstore 7 /* now */
        start local 7 // long now
         2: .line 274
            goto 8
         3: .line 275
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface org.xnio.channels.WritableMessageChannel.send:(Ljava/nio/ByteBuffer;)Z
            ifne 7
         4: .line 276
            aload 0 /* channel */
            lload 5 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.WritableMessageChannel.awaitWritable:(JLjava/util/concurrent/TimeUnit;)V
         5: .line 277
            lload 5 /* remaining */
            lload 7 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 7 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 5 /* remaining */
         6: .line 278
            goto 8
         7: .line 279
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         8: .line 274
      StackMap locals:
      StackMap stack:
            lload 5 /* remaining */
            lconst_0
            lcmp
            ifgt 3
         9: .line 282
            iconst_0
            ireturn
        end local 7 // long now
        end local 5 // long remaining
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long time
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // org.xnio.channels.WritableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0    channel  TC;
            0   10     1     buffer  Ljava/nio/ByteBuffer;
            0   10     2       time  J
            0   10     4       unit  Ljava/util/concurrent/TimeUnit;
            1   10     5  remaining  J
            2   10     7        now  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/WritableMessageChannel;>(TC;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)Z
    MethodParameters:
         Name  Flags
      channel  
      buffer   
      time     
      unit     

  public static <C extends org.xnio.channels.WritableMessageChannel> void sendBlocking(C, java.nio.ByteBuffer[], int, );
    descriptor: (Lorg/xnio/channels/WritableMessageChannel;[Ljava/nio/ByteBuffer;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.xnio.channels.WritableMessageChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
         0: .line 297
            goto 2
         1: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.WritableMessageChannel.awaitWritable:()V
         2: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface org.xnio.channels.WritableMessageChannel.send:([Ljava/nio/ByteBuffer;II)Z
            ifeq 1
         3: .line 300
            return
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // org.xnio.channels.WritableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  channel  TC;
            0    4     1  buffers  [Ljava/nio/ByteBuffer;
            0    4     2     offs  I
            0    4     3      len  I
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/WritableMessageChannel;>(TC;[Ljava/nio/ByteBuffer;II)V
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      

  public static <C extends org.xnio.channels.WritableMessageChannel> boolean sendBlocking(C, java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/WritableMessageChannel;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=11, args_size=6
        start local 0 // org.xnio.channels.WritableMessageChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
        start local 4 // long time
        start local 6 // java.util.concurrent.TimeUnit unit
         0: .line 318
            aload 6 /* unit */
            lload 4 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 7 /* remaining */
        start local 7 // long remaining
         1: .line 319
            invokestatic java.lang.System.nanoTime:()J
            lstore 9 /* now */
        start local 9 // long now
         2: .line 320
            goto 8
         3: .line 321
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface org.xnio.channels.WritableMessageChannel.send:([Ljava/nio/ByteBuffer;II)Z
            ifne 7
         4: .line 322
            aload 0 /* channel */
            lload 7 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.WritableMessageChannel.awaitWritable:(JLjava/util/concurrent/TimeUnit;)V
         5: .line 323
            lload 7 /* remaining */
            lload 9 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 9 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 7 /* remaining */
         6: .line 324
            goto 8
         7: .line 325
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         8: .line 320
      StackMap locals:
      StackMap stack:
            lload 7 /* remaining */
            lconst_0
            lcmp
            ifgt 3
         9: .line 328
            iconst_0
            ireturn
        end local 9 // long now
        end local 7 // long remaining
        end local 6 // java.util.concurrent.TimeUnit unit
        end local 4 // long time
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // org.xnio.channels.WritableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0    channel  TC;
            0   10     1    buffers  [Ljava/nio/ByteBuffer;
            0   10     2       offs  I
            0   10     3        len  I
            0   10     4       time  J
            0   10     6       unit  Ljava/util/concurrent/TimeUnit;
            1   10     7  remaining  J
            2   10     9        now  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/WritableMessageChannel;>(TC;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)Z
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      
      time     
      unit     

  public static <C extends java.nio.channels.ReadableByteChannel, org.xnio.channels.SuspendableReadChannel> int readBlocking(C, java.nio.ByteBuffer);
    descriptor: (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.nio.channels.ReadableByteChannel channel
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 344
            goto 2
        start local 2 // int res
         1: .line 345
      StackMap locals: int
      StackMap stack:
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableReadChannel
            invokeinterface org.xnio.channels.SuspendableReadChannel.awaitReadable:()V
        end local 2 // int res
         2: .line 344
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface java.nio.channels.ReadableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            dup
            istore 2 /* res */
        start local 2 // int res
         3: ifne 4
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 1
         4: .line 347
      StackMap locals: int
      StackMap stack:
            iload 2 /* res */
            ireturn
        end local 2 // int res
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // java.nio.channels.ReadableByteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  channel  TC;
            0    5     1   buffer  Ljava/nio/ByteBuffer;
            1    2     2      res  I
            3    5     2      res  I
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/ReadableByteChannel;:Lorg/xnio/channels/SuspendableReadChannel;>(TC;Ljava/nio/ByteBuffer;)I
    MethodParameters:
         Name  Flags
      channel  
      buffer   

  public static <C extends java.nio.channels.ReadableByteChannel, org.xnio.channels.SuspendableReadChannel> int readBlocking(C, java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=10, args_size=4
        start local 0 // java.nio.channels.ReadableByteChannel channel
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 365
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface java.nio.channels.ReadableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 5 /* res */
        start local 5 // int res
         1: .line 366
            iload 5 /* res */
            ifeq 3
         2: .line 367
            iload 5 /* res */
            ireturn
         3: .line 369
      StackMap locals: int
      StackMap stack:
            aload 4 /* unit */
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 6 /* remaining */
        start local 6 // long remaining
         4: .line 370
            invokestatic java.lang.System.nanoTime:()J
            lstore 8 /* now */
        start local 8 // long now
         5: .line 371
            goto 11
         6: .line 373
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableReadChannel
            lload 6 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.SuspendableReadChannel.awaitReadable:(JLjava/util/concurrent/TimeUnit;)V
         7: .line 376
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface java.nio.channels.ReadableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 5 /* res */
         8: .line 377
            iload 5 /* res */
            ifeq 10
         9: .line 378
            iload 5 /* res */
            ireturn
        10: .line 382
      StackMap locals:
      StackMap stack:
            lload 6 /* remaining */
            lload 8 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 8 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 6 /* remaining */
        11: .line 371
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 12
            lload 6 /* remaining */
            lconst_0
            lcmp
            ifgt 6
        12: .line 384
      StackMap locals:
      StackMap stack:
            iload 5 /* res */
            ireturn
        end local 8 // long now
        end local 6 // long remaining
        end local 5 // int res
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long time
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // java.nio.channels.ReadableByteChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0    channel  TC;
            0   13     1     buffer  Ljava/nio/ByteBuffer;
            0   13     2       time  J
            0   13     4       unit  Ljava/util/concurrent/TimeUnit;
            1   13     5        res  I
            4   13     6  remaining  J
            5   13     8        now  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/ReadableByteChannel;:Lorg/xnio/channels/SuspendableReadChannel;>(TC;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)I
    MethodParameters:
         Name  Flags
      channel  
      buffer   
      time     
      unit     

  public static <C extends java.nio.channels.ScatteringByteChannel, org.xnio.channels.SuspendableReadChannel> long readBlocking(C, java.nio.ByteBuffer[], int, );
    descriptor: (Ljava/nio/channels/ScatteringByteChannel;[Ljava/nio/ByteBuffer;II)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // java.nio.channels.ScatteringByteChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
         0: .line 402
            goto 2
        start local 4 // long res
         1: .line 403
      StackMap locals: long
      StackMap stack:
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableReadChannel
            invokeinterface org.xnio.channels.SuspendableReadChannel.awaitReadable:()V
        end local 4 // long res
         2: .line 402
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface java.nio.channels.ScatteringByteChannel.read:([Ljava/nio/ByteBuffer;II)J
            dup2
            lstore 4 /* res */
        start local 4 // long res
         3: lconst_0
            lcmp
            ifeq 1
         4: .line 405
            lload 4 /* res */
            lreturn
        end local 4 // long res
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // java.nio.channels.ScatteringByteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  channel  TC;
            0    5     1  buffers  [Ljava/nio/ByteBuffer;
            0    5     2     offs  I
            0    5     3      len  I
            1    2     4      res  J
            3    5     4      res  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/ScatteringByteChannel;:Lorg/xnio/channels/SuspendableReadChannel;>(TC;[Ljava/nio/ByteBuffer;II)J
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      

  public static <C extends java.nio.channels.ScatteringByteChannel, org.xnio.channels.SuspendableReadChannel> long readBlocking(C, java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/nio/channels/ScatteringByteChannel;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=13, args_size=6
        start local 0 // java.nio.channels.ScatteringByteChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
        start local 4 // long time
        start local 6 // java.util.concurrent.TimeUnit unit
         0: .line 426
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface java.nio.channels.ScatteringByteChannel.read:([Ljava/nio/ByteBuffer;II)J
            lstore 7 /* res */
        start local 7 // long res
         1: .line 427
            lload 7 /* res */
            lconst_0
            lcmp
            ifeq 3
         2: .line 428
            lload 7 /* res */
            lreturn
         3: .line 430
      StackMap locals: long
      StackMap stack:
            aload 6 /* unit */
            lload 4 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 9 /* remaining */
        start local 9 // long remaining
         4: .line 431
            invokestatic java.lang.System.nanoTime:()J
            lstore 11 /* now */
        start local 11 // long now
         5: .line 432
            goto 11
         6: .line 434
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            checkcast org.xnio.channels.SuspendableReadChannel
            lload 9 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.SuspendableReadChannel.awaitReadable:(JLjava/util/concurrent/TimeUnit;)V
         7: .line 437
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface java.nio.channels.ScatteringByteChannel.read:([Ljava/nio/ByteBuffer;II)J
            lstore 7 /* res */
         8: .line 438
            lload 7 /* res */
            lconst_0
            lcmp
            ifeq 10
         9: .line 439
            lload 7 /* res */
            lreturn
        10: .line 443
      StackMap locals:
      StackMap stack:
            lload 9 /* remaining */
            lload 11 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 11 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 9 /* remaining */
        11: .line 432
      StackMap locals:
      StackMap stack:
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokestatic org.xnio.Buffers.hasRemaining:([Ljava/nio/Buffer;II)Z
            ifeq 12
            lload 9 /* remaining */
            lconst_0
            lcmp
            ifgt 6
        12: .line 445
      StackMap locals:
      StackMap stack:
            lload 7 /* res */
            lreturn
        end local 11 // long now
        end local 9 // long remaining
        end local 7 // long res
        end local 6 // java.util.concurrent.TimeUnit unit
        end local 4 // long time
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // java.nio.channels.ScatteringByteChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0    channel  TC;
            0   13     1    buffers  [Ljava/nio/ByteBuffer;
            0   13     2       offs  I
            0   13     3        len  I
            0   13     4       time  J
            0   13     6       unit  Ljava/util/concurrent/TimeUnit;
            1   13     7        res  J
            4   13     9  remaining  J
            5   13    11        now  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Ljava/nio/channels/ScatteringByteChannel;:Lorg/xnio/channels/SuspendableReadChannel;>(TC;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)J
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      
      time     
      unit     

  public static <C extends org.xnio.channels.ReadableMessageChannel> int receiveBlocking(C, java.nio.ByteBuffer);
    descriptor: (Lorg/xnio/channels/ReadableMessageChannel;Ljava/nio/ByteBuffer;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.channels.ReadableMessageChannel channel
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 461
            goto 2
        start local 2 // int res
         1: .line 462
      StackMap locals: int
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.ReadableMessageChannel.awaitReadable:()V
        end local 2 // int res
         2: .line 461
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface org.xnio.channels.ReadableMessageChannel.receive:(Ljava/nio/ByteBuffer;)I
            dup
            istore 2 /* res */
        start local 2 // int res
         3: ifeq 1
         4: .line 464
            iload 2 /* res */
            ireturn
        end local 2 // int res
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // org.xnio.channels.ReadableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  channel  TC;
            0    5     1   buffer  Ljava/nio/ByteBuffer;
            1    2     2      res  I
            3    5     2      res  I
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/ReadableMessageChannel;>(TC;Ljava/nio/ByteBuffer;)I
    MethodParameters:
         Name  Flags
      channel  
      buffer   

  public static <C extends org.xnio.channels.ReadableMessageChannel> int receiveBlocking(C, java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/ReadableMessageChannel;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=10, args_size=4
        start local 0 // org.xnio.channels.ReadableMessageChannel channel
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 482
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface org.xnio.channels.ReadableMessageChannel.receive:(Ljava/nio/ByteBuffer;)I
            istore 5 /* res */
        start local 5 // int res
         1: .line 483
            iload 5 /* res */
            ifeq 3
         2: .line 484
            iload 5 /* res */
            ireturn
         3: .line 486
      StackMap locals: int
      StackMap stack:
            aload 4 /* unit */
            lload 2 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 6 /* remaining */
        start local 6 // long remaining
         4: .line 487
            invokestatic java.lang.System.nanoTime:()J
            lstore 8 /* now */
        start local 8 // long now
         5: .line 488
            goto 11
         6: .line 490
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            lload 6 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.ReadableMessageChannel.awaitReadable:(JLjava/util/concurrent/TimeUnit;)V
         7: .line 493
            aload 0 /* channel */
            aload 1 /* buffer */
            invokeinterface org.xnio.channels.ReadableMessageChannel.receive:(Ljava/nio/ByteBuffer;)I
            istore 5 /* res */
         8: .line 494
            iload 5 /* res */
            ifeq 10
         9: .line 495
            iload 5 /* res */
            ireturn
        10: .line 499
      StackMap locals:
      StackMap stack:
            lload 6 /* remaining */
            lload 8 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 8 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 6 /* remaining */
        11: .line 488
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 12
            lload 6 /* remaining */
            lconst_0
            lcmp
            ifgt 6
        12: .line 501
      StackMap locals:
      StackMap stack:
            iload 5 /* res */
            ireturn
        end local 8 // long now
        end local 6 // long remaining
        end local 5 // int res
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long time
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // org.xnio.channels.ReadableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0    channel  TC;
            0   13     1     buffer  Ljava/nio/ByteBuffer;
            0   13     2       time  J
            0   13     4       unit  Ljava/util/concurrent/TimeUnit;
            1   13     5        res  I
            4   13     6  remaining  J
            5   13     8        now  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/ReadableMessageChannel;>(TC;Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;)I
    MethodParameters:
         Name  Flags
      channel  
      buffer   
      time     
      unit     

  public static <C extends org.xnio.channels.ReadableMessageChannel> long receiveBlocking(C, java.nio.ByteBuffer[], int, );
    descriptor: (Lorg/xnio/channels/ReadableMessageChannel;[Ljava/nio/ByteBuffer;II)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.xnio.channels.ReadableMessageChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
         0: .line 519
            goto 2
        start local 4 // long res
         1: .line 520
      StackMap locals: long
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.ReadableMessageChannel.awaitReadable:()V
        end local 4 // long res
         2: .line 519
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface org.xnio.channels.ReadableMessageChannel.receive:([Ljava/nio/ByteBuffer;II)J
            dup2
            lstore 4 /* res */
        start local 4 // long res
         3: lconst_0
            lcmp
            ifeq 1
         4: .line 522
            lload 4 /* res */
            lreturn
        end local 4 // long res
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // org.xnio.channels.ReadableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  channel  TC;
            0    5     1  buffers  [Ljava/nio/ByteBuffer;
            0    5     2     offs  I
            0    5     3      len  I
            1    2     4      res  J
            3    5     4      res  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/ReadableMessageChannel;>(TC;[Ljava/nio/ByteBuffer;II)J
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      

  public static <C extends org.xnio.channels.ReadableMessageChannel> long receiveBlocking(C, java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/ReadableMessageChannel;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=13, args_size=6
        start local 0 // org.xnio.channels.ReadableMessageChannel channel
        start local 1 // java.nio.ByteBuffer[] buffers
        start local 2 // int offs
        start local 3 // int len
        start local 4 // long time
        start local 6 // java.util.concurrent.TimeUnit unit
         0: .line 542
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface org.xnio.channels.ReadableMessageChannel.receive:([Ljava/nio/ByteBuffer;II)J
            lstore 7 /* res */
        start local 7 // long res
         1: .line 543
            lload 7 /* res */
            lconst_0
            lcmp
            ifeq 3
         2: .line 544
            lload 7 /* res */
            lreturn
         3: .line 546
      StackMap locals: long
      StackMap stack:
            aload 6 /* unit */
            lload 4 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 9 /* remaining */
        start local 9 // long remaining
         4: .line 547
            invokestatic java.lang.System.nanoTime:()J
            lstore 11 /* now */
        start local 11 // long now
         5: .line 548
            goto 11
         6: .line 550
      StackMap locals: long long
      StackMap stack:
            aload 0 /* channel */
            lload 9 /* remaining */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface org.xnio.channels.ReadableMessageChannel.awaitReadable:(JLjava/util/concurrent/TimeUnit;)V
         7: .line 551
            aload 0 /* channel */
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokeinterface org.xnio.channels.ReadableMessageChannel.receive:([Ljava/nio/ByteBuffer;II)J
            lstore 7 /* res */
         8: .line 552
            lload 7 /* res */
            lconst_0
            lcmp
            ifeq 10
         9: .line 553
            lload 7 /* res */
            lreturn
        10: .line 557
      StackMap locals:
      StackMap stack:
            lload 9 /* remaining */
            lload 11 /* now */
            lneg
            invokestatic java.lang.System.nanoTime:()J
            dup2
            lstore 11 /* now */
            ladd
            lconst_0
            invokestatic java.lang.Math.max:(JJ)J
            lsub
            lstore 9 /* remaining */
        11: .line 548
      StackMap locals:
      StackMap stack:
            aload 1 /* buffers */
            iload 2 /* offs */
            iload 3 /* len */
            invokestatic org.xnio.Buffers.hasRemaining:([Ljava/nio/Buffer;II)Z
            ifeq 12
            lload 9 /* remaining */
            lconst_0
            lcmp
            ifgt 6
        12: .line 559
      StackMap locals:
      StackMap stack:
            lload 7 /* res */
            lreturn
        end local 11 // long now
        end local 9 // long remaining
        end local 7 // long res
        end local 6 // java.util.concurrent.TimeUnit unit
        end local 4 // long time
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] buffers
        end local 0 // org.xnio.channels.ReadableMessageChannel channel
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0    channel  TC;
            0   13     1    buffers  [Ljava/nio/ByteBuffer;
            0   13     2       offs  I
            0   13     3        len  I
            0   13     4       time  J
            0   13     6       unit  Ljava/util/concurrent/TimeUnit;
            1   13     7        res  J
            4   13     9  remaining  J
            5   13    11        now  J
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/ReadableMessageChannel;>(TC;[Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;)J
    MethodParameters:
         Name  Flags
      channel  
      buffers  
      offs     
      len      
      time     
      unit     

  public static <C extends org.xnio.channels.ConnectedChannel, A extends org.xnio.channels.AcceptingChannel<C>> C acceptBlocking();
    descriptor: (Lorg/xnio/channels/AcceptingChannel;)Lorg/xnio/channels/ConnectedChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.xnio.channels.AcceptingChannel channel
         0: .line 575
            goto 2
        start local 1 // org.xnio.channels.ConnectedChannel accepted
         1: .line 576
      StackMap locals: org.xnio.channels.ConnectedChannel
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.AcceptingChannel.awaitAcceptable:()V
        end local 1 // org.xnio.channels.ConnectedChannel accepted
         2: .line 575
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            invokeinterface org.xnio.channels.AcceptingChannel.accept:()Lorg/xnio/channels/ConnectedChannel;
            dup
            astore 1 /* accepted */
        start local 1 // org.xnio.channels.ConnectedChannel accepted
         3: ifnull 1
         4: .line 578
            aload 1 /* accepted */
            areturn
        end local 1 // org.xnio.channels.ConnectedChannel accepted
        end local 0 // org.xnio.channels.AcceptingChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0   channel  TA;
            1    2     1  accepted  TC;
            3    5     1  accepted  TC;
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/ConnectedChannel;A::Lorg/xnio/channels/AcceptingChannel<TC;>;>(TA;)TC;
    MethodParameters:
         Name  Flags
      channel  

  public static <C extends org.xnio.channels.ConnectedChannel, A extends org.xnio.channels.AcceptingChannel<C>> C acceptBlocking(A, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/xnio/channels/AcceptingChannel;JLjava/util/concurrent/TimeUnit;)Lorg/xnio/channels/ConnectedChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.xnio.channels.AcceptingChannel channel
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 595
            aload 0 /* channel */
            invokeinterface org.xnio.channels.AcceptingChannel.accept:()Lorg/xnio/channels/ConnectedChannel;
            astore 4 /* accepted */
        start local 4 // org.xnio.channels.ConnectedChannel accepted
         1: .line 596
            aload 4 /* accepted */
            ifnonnull 4
         2: .line 597
            aload 0 /* channel */
            lload 1 /* time */
            aload 3 /* unit */
            invokeinterface org.xnio.channels.AcceptingChannel.awaitAcceptable:(JLjava/util/concurrent/TimeUnit;)V
         3: .line 598
            aload 0 /* channel */
            invokeinterface org.xnio.channels.AcceptingChannel.accept:()Lorg/xnio/channels/ConnectedChannel;
            areturn
         4: .line 600
      StackMap locals: org.xnio.channels.ConnectedChannel
      StackMap stack:
            aload 4 /* accepted */
            areturn
        end local 4 // org.xnio.channels.ConnectedChannel accepted
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long time
        end local 0 // org.xnio.channels.AcceptingChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0   channel  TA;
            0    5     1      time  J
            0    5     3      unit  Ljava/util/concurrent/TimeUnit;
            1    5     4  accepted  TC;
    Exceptions:
      throws java.io.IOException
    Signature: <C::Lorg/xnio/channels/ConnectedChannel;A::Lorg/xnio/channels/AcceptingChannel<TC;>;>(TA;JLjava/util/concurrent/TimeUnit;)TC;
    MethodParameters:
         Name  Flags
      channel  
      time     
      unit     

  public static void transferBlocking(org.xnio.channels.StreamSinkChannel, java.nio.channels.FileChannel, long, long);
    descriptor: (Lorg/xnio/channels/StreamSinkChannel;Ljava/nio/channels/FileChannel;JJ)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=13, args_size=4
        start local 0 // org.xnio.channels.StreamSinkChannel destination
        start local 1 // java.nio.channels.FileChannel source
        start local 2 // long startPosition
        start local 4 // long count
         0: .line 614
            lload 4 /* count */
            lstore 6 /* remaining */
        start local 6 // long remaining
         1: .line 616
            goto 14
        start local 8 // long res
         2: .line 619
      StackMap locals: long long
      StackMap stack:
            aload 0 /* destination */
            invokeinterface org.xnio.channels.StreamSinkChannel.awaitWritable:()V
         3: .line 620
            goto 10
      StackMap locals:
      StackMap stack: java.io.InterruptedIOException
         4: astore 10 /* e */
        start local 10 // java.io.InterruptedIOException e
         5: .line 621
            lload 4 /* count */
            lload 6 /* remaining */
            lsub
            lstore 11 /* bytes */
        start local 11 // long bytes
         6: .line 622
            lload 11 /* bytes */
            ldc 2147483647
            lcmp
            ifle 9
         7: .line 623
            aload 10 /* e */
            iconst_m1
            putfield java.io.InterruptedIOException.bytesTransferred:I
         8: .line 624
            goto 10
         9: .line 625
      StackMap locals: java.io.InterruptedIOException long
      StackMap stack:
            aload 10 /* e */
            lload 11 /* bytes */
            l2i
            putfield java.io.InterruptedIOException.bytesTransferred:I
        end local 11 // long bytes
        end local 10 // java.io.InterruptedIOException e
        end local 8 // long res
        10: .line 617
      StackMap locals:
      StackMap stack:
            aload 0 /* destination */
            aload 1 /* source */
            lload 2 /* startPosition */
            lload 6 /* remaining */
            invokeinterface org.xnio.channels.StreamSinkChannel.transferFrom:(Ljava/nio/channels/FileChannel;JJ)J
            dup2
            lstore 8 /* res */
        start local 8 // long res
        11: lconst_0
            lcmp
            ifeq 2
        12: .line 629
            lload 6 /* remaining */
            lload 8 /* res */
            lsub
            lstore 6 /* remaining */
        13: .line 630
            lload 2 /* startPosition */
            lload 8 /* res */
            ladd
            lstore 2 /* startPosition */
        end local 8 // long res
        14: .line 616
      StackMap locals:
      StackMap stack:
            lload 6 /* remaining */
            lconst_0
            lcmp
            ifgt 10
        15: .line 632
            return
        end local 6 // long remaining
        end local 4 // long count
        end local 2 // long startPosition
        end local 1 // java.nio.channels.FileChannel source
        end local 0 // org.xnio.channels.StreamSinkChannel destination
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0    destination  Lorg/xnio/channels/StreamSinkChannel;
            0   16     1         source  Ljava/nio/channels/FileChannel;
            0   16     2  startPosition  J
            0   16     4          count  J
            1   16     6      remaining  J
            2   10     8            res  J
           11   14     8            res  J
            5   10    10              e  Ljava/io/InterruptedIOException;
            6   10    11          bytes  J
      Exception table:
        from    to  target  type
           2     3       4  Class java.io.InterruptedIOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      destination    
      source         
      startPosition  
      count          final

  public static void transferBlocking(java.nio.channels.FileChannel, org.xnio.channels.StreamSourceChannel, long, long);
    descriptor: (Ljava/nio/channels/FileChannel;Lorg/xnio/channels/StreamSourceChannel;JJ)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=13, args_size=4
        start local 0 // java.nio.channels.FileChannel destination
        start local 1 // org.xnio.channels.StreamSourceChannel source
        start local 2 // long startPosition
        start local 4 // long count
         0: .line 644
            lload 4 /* count */
            lstore 6 /* remaining */
        start local 6 // long remaining
         1: .line 646
            goto 14
        start local 8 // long res
         2: .line 649
      StackMap locals: long long
      StackMap stack:
            aload 1 /* source */
            invokeinterface org.xnio.channels.StreamSourceChannel.awaitReadable:()V
         3: .line 650
            goto 10
      StackMap locals:
      StackMap stack: java.io.InterruptedIOException
         4: astore 10 /* e */
        start local 10 // java.io.InterruptedIOException e
         5: .line 651
            lload 4 /* count */
            lload 6 /* remaining */
            lsub
            lstore 11 /* bytes */
        start local 11 // long bytes
         6: .line 652
            lload 11 /* bytes */
            ldc 2147483647
            lcmp
            ifle 9
         7: .line 653
            aload 10 /* e */
            iconst_m1
            putfield java.io.InterruptedIOException.bytesTransferred:I
         8: .line 654
            goto 10
         9: .line 655
      StackMap locals: java.io.InterruptedIOException long
      StackMap stack:
            aload 10 /* e */
            lload 11 /* bytes */
            l2i
            putfield java.io.InterruptedIOException.bytesTransferred:I
        end local 11 // long bytes
        end local 10 // java.io.InterruptedIOException e
        end local 8 // long res
        10: .line 647
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            lload 2 /* startPosition */
            lload 6 /* remaining */
            aload 0 /* destination */
            invokeinterface org.xnio.channels.StreamSourceChannel.transferTo:(JJLjava/nio/channels/FileChannel;)J
            dup2
            lstore 8 /* res */
        start local 8 // long res
        11: lconst_0
            lcmp
            ifeq 2
        12: .line 659
            lload 6 /* remaining */
            lload 8 /* res */
            lsub
            lstore 6 /* remaining */
        13: .line 660
            lload 2 /* startPosition */
            lload 8 /* res */
            ladd
            lstore 2 /* startPosition */
        end local 8 // long res
        14: .line 646
      StackMap locals:
      StackMap stack:
            lload 6 /* remaining */
            lconst_0
            lcmp
            ifgt 10
        15: .line 662
            return
        end local 6 // long remaining
        end local 4 // long count
        end local 2 // long startPosition
        end local 1 // org.xnio.channels.StreamSourceChannel source
        end local 0 // java.nio.channels.FileChannel destination
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0    destination  Ljava/nio/channels/FileChannel;
            0   16     1         source  Lorg/xnio/channels/StreamSourceChannel;
            0   16     2  startPosition  J
            0   16     4          count  J
            1   16     6      remaining  J
            2   10     8            res  J
           11   14     8            res  J
            5   10    10              e  Ljava/io/InterruptedIOException;
            6   10    11          bytes  J
      Exception table:
        from    to  target  type
           2     3       4  Class java.io.InterruptedIOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      destination    
      source         
      startPosition  
      count          final

  public static long transferBlocking(org.xnio.channels.StreamSinkChannel, org.xnio.channels.StreamSourceChannel, java.nio.ByteBuffer, long);
    descriptor: (Lorg/xnio/channels/StreamSinkChannel;Lorg/xnio/channels/StreamSourceChannel;Ljava/nio/ByteBuffer;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // org.xnio.channels.StreamSinkChannel destination
        start local 1 // org.xnio.channels.StreamSourceChannel source
        start local 2 // java.nio.ByteBuffer throughBuffer
        start local 3 // long count
         0: .line 675
            lconst_0
            lstore 5 /* t */
        start local 5 // long t
         1: .line 677
            goto 22
        start local 7 // long res
         2: .line 680
      StackMap locals: long long
      StackMap stack:
            aload 2 /* throughBuffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 5
         3: .line 681
            aload 0 /* destination */
            aload 2 /* throughBuffer */
            invokestatic org.xnio.channels.Channels.writeBlocking:(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)I
            pop
         4: .line 682
            goto 6
         5: .line 683
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            invokeinterface org.xnio.channels.StreamSourceChannel.awaitReadable:()V
        end local 7 // long res
         6: .line 679
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            lload 3 /* count */
            aload 2 /* throughBuffer */
            aload 0 /* destination */
            invokeinterface org.xnio.channels.StreamSourceChannel.transferTo:(JLjava/nio/ByteBuffer;Lorg/xnio/channels/StreamSinkChannel;)J
            dup2
            lstore 7 /* res */
        start local 7 // long res
         7: lconst_0
            lcmp
            ifeq 2
         8: .line 686
            lload 5 /* t */
            lload 7 /* res */
            ladd
            lstore 5 /* t */
         9: .line 687
            goto 18
        end local 7 // long res
      StackMap locals:
      StackMap stack: java.io.InterruptedIOException
        10: astore 9 /* e */
        start local 9 // java.io.InterruptedIOException e
        11: .line 688
            aload 9 /* e */
            getfield java.io.InterruptedIOException.bytesTransferred:I
            istore 10 /* transferred */
        start local 10 // int transferred
        12: .line 689
            lload 5 /* t */
            iload 10 /* transferred */
            i2l
            ladd
            lstore 5 /* t */
        13: .line 690
            iload 10 /* transferred */
            iflt 14
            lload 5 /* t */
            ldc 2147483647
            lcmp
            ifle 16
        14: .line 691
      StackMap locals: org.xnio.channels.StreamSinkChannel org.xnio.channels.StreamSourceChannel java.nio.ByteBuffer long long top top java.io.InterruptedIOException int
      StackMap stack:
            aload 9 /* e */
            iconst_m1
            putfield java.io.InterruptedIOException.bytesTransferred:I
        15: .line 692
            goto 17
        16: .line 693
      StackMap locals:
      StackMap stack:
            aload 9 /* e */
            lload 5 /* t */
            l2i
            putfield java.io.InterruptedIOException.bytesTransferred:I
        17: .line 695
      StackMap locals:
      StackMap stack:
            aload 9 /* e */
            athrow
        end local 10 // int transferred
        end local 9 // java.io.InterruptedIOException e
        start local 7 // long res
        18: .line 697
      StackMap locals: org.xnio.channels.StreamSinkChannel org.xnio.channels.StreamSourceChannel java.nio.ByteBuffer long long long
      StackMap stack:
            lload 7 /* res */
            ldc -1
            lcmp
            ifne 22
        19: .line 698
            lload 5 /* t */
            lconst_0
            lcmp
            ifne 20
            ldc -1
            goto 21
      StackMap locals:
      StackMap stack:
        20: lload 5 /* t */
      StackMap locals:
      StackMap stack: long
        21: lreturn
        end local 7 // long res
        22: .line 677
      StackMap locals:
      StackMap stack:
            lload 5 /* t */
            lload 3 /* count */
            lcmp
            iflt 6
        23: .line 701
            lload 5 /* t */
            lreturn
        end local 5 // long t
        end local 3 // long count
        end local 2 // java.nio.ByteBuffer throughBuffer
        end local 1 // org.xnio.channels.StreamSourceChannel source
        end local 0 // org.xnio.channels.StreamSinkChannel destination
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   24     0    destination  Lorg/xnio/channels/StreamSinkChannel;
            0   24     1         source  Lorg/xnio/channels/StreamSourceChannel;
            0   24     2  throughBuffer  Ljava/nio/ByteBuffer;
            0   24     3          count  J
            1   24     5              t  J
            2    6     7            res  J
            7   10     7            res  J
           18   22     7            res  J
           11   18     9              e  Ljava/io/InterruptedIOException;
           12   18    10    transferred  I
      Exception table:
        from    to  target  type
           2     9      10  Class java.io.InterruptedIOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      destination    
      source         
      throughBuffer  
      count          

  public static <T extends org.xnio.channels.CloseableChannel> void setCloseListener(T, org.xnio.ChannelListener<? super T>);
    descriptor: (Lorg/xnio/channels/CloseableChannel;Lorg/xnio/ChannelListener;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.channels.CloseableChannel channel
        start local 1 // org.xnio.ChannelListener listener
         0: .line 713
            aload 0 /* channel */
            invokeinterface org.xnio.channels.CloseableChannel.getCloseSetter:()Lorg/xnio/ChannelListener$Setter;
            astore 2 /* setter */
        start local 2 // org.xnio.ChannelListener$Setter setter
         1: .line 714
            aload 2 /* setter */
            aload 1 /* listener */
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         2: .line 715
            return
        end local 2 // org.xnio.ChannelListener$Setter setter
        end local 1 // org.xnio.ChannelListener listener
        end local 0 // org.xnio.channels.CloseableChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   channel  TT;
            0    3     1  listener  Lorg/xnio/ChannelListener<-TT;>;
            1    3     2    setter  Lorg/xnio/ChannelListener$Setter<+TT;>;
    Signature: <T::Lorg/xnio/channels/CloseableChannel;>(TT;Lorg/xnio/ChannelListener<-TT;>;)V
    MethodParameters:
          Name  Flags
      channel   
      listener  

  public static <T extends org.xnio.channels.AcceptingChannel<?>> void setAcceptListener(T, org.xnio.ChannelListener<? super T>);
    descriptor: (Lorg/xnio/channels/AcceptingChannel;Lorg/xnio/ChannelListener;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.channels.AcceptingChannel channel
        start local 1 // org.xnio.ChannelListener listener
         0: .line 726
            aload 0 /* channel */
            invokeinterface org.xnio.channels.AcceptingChannel.getAcceptSetter:()Lorg/xnio/ChannelListener$Setter;
            astore 2 /* setter */
        start local 2 // org.xnio.ChannelListener$Setter setter
         1: .line 727
            aload 2 /* setter */
            aload 1 /* listener */
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         2: .line 728
            return
        end local 2 // org.xnio.ChannelListener$Setter setter
        end local 1 // org.xnio.ChannelListener listener
        end local 0 // org.xnio.channels.AcceptingChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   channel  TT;
            0    3     1  listener  Lorg/xnio/ChannelListener<-TT;>;
            1    3     2    setter  Lorg/xnio/ChannelListener$Setter<+TT;>;
    Signature: <T::Lorg/xnio/channels/AcceptingChannel<*>;>(TT;Lorg/xnio/ChannelListener<-TT;>;)V
    MethodParameters:
          Name  Flags
      channel   
      listener  

  public static <T extends org.xnio.channels.SuspendableReadChannel> void setReadListener(T, org.xnio.ChannelListener<? super T>);
    descriptor: (Lorg/xnio/channels/SuspendableReadChannel;Lorg/xnio/ChannelListener;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.channels.SuspendableReadChannel channel
        start local 1 // org.xnio.ChannelListener listener
         0: .line 739
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableReadChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
            astore 2 /* setter */
        start local 2 // org.xnio.ChannelListener$Setter setter
         1: .line 740
            aload 2 /* setter */
            aload 1 /* listener */
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         2: .line 741
            return
        end local 2 // org.xnio.ChannelListener$Setter setter
        end local 1 // org.xnio.ChannelListener listener
        end local 0 // org.xnio.channels.SuspendableReadChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   channel  TT;
            0    3     1  listener  Lorg/xnio/ChannelListener<-TT;>;
            1    3     2    setter  Lorg/xnio/ChannelListener$Setter<+TT;>;
    Signature: <T::Lorg/xnio/channels/SuspendableReadChannel;>(TT;Lorg/xnio/ChannelListener<-TT;>;)V
    MethodParameters:
          Name  Flags
      channel   
      listener  

  public static <T extends org.xnio.channels.SuspendableWriteChannel> void setWriteListener(T, org.xnio.ChannelListener<? super T>);
    descriptor: (Lorg/xnio/channels/SuspendableWriteChannel;Lorg/xnio/ChannelListener;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.channels.SuspendableWriteChannel channel
        start local 1 // org.xnio.ChannelListener listener
         0: .line 752
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.getWriteSetter:()Lorg/xnio/ChannelListener$Setter;
            astore 2 /* setter */
        start local 2 // org.xnio.ChannelListener$Setter setter
         1: .line 753
            aload 2 /* setter */
            aload 1 /* listener */
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         2: .line 754
            return
        end local 2 // org.xnio.ChannelListener$Setter setter
        end local 1 // org.xnio.ChannelListener listener
        end local 0 // org.xnio.channels.SuspendableWriteChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   channel  TT;
            0    3     1  listener  Lorg/xnio/ChannelListener<-TT;>;
            1    3     2    setter  Lorg/xnio/ChannelListener$Setter<+TT;>;
    Signature: <T::Lorg/xnio/channels/SuspendableWriteChannel;>(TT;Lorg/xnio/ChannelListener<-TT;>;)V
    MethodParameters:
          Name  Flags
      channel   
      listener  

  public static org.xnio.channels.ByteChannel wrapByteChannel(org.xnio.channels.ByteChannel);
    descriptor: (Lorg/xnio/channels/ByteChannel;)Lorg/xnio/channels/ByteChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.xnio.channels.ByteChannel original
         0: .line 763
            new org.xnio.channels.Channels$2
            dup
            aload 0 /* original */
            invokespecial org.xnio.channels.Channels$2.<init>:(Lorg/xnio/channels/ByteChannel;)V
            areturn
        end local 0 // org.xnio.channels.ByteChannel original
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  original  Lorg/xnio/channels/ByteChannel;
    MethodParameters:
          Name  Flags
      original  final

  public static <T> T getOption(org.xnio.channels.Configurable, org.xnio.Option<T>, );
    descriptor: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.xnio.channels.Configurable configurable
        start local 1 // org.xnio.Option option
        start local 2 // java.lang.Object defaultValue
         0: .line 810
            aload 0 /* configurable */
            aload 1 /* option */
            invokeinterface org.xnio.channels.Configurable.getOption:(Lorg/xnio/Option;)Ljava/lang/Object;
            astore 3 /* value */
        start local 3 // java.lang.Object value
         1: .line 811
            aload 3 /* value */
            ifnonnull 2
            aload 2 /* defaultValue */
            goto 3
      StackMap locals: java.lang.Object
      StackMap stack:
         2: aload 3 /* value */
      StackMap locals:
      StackMap stack: java.lang.Object
         3: areturn
        end local 3 // java.lang.Object value
         4: .line 812
      StackMap locals: org.xnio.channels.Configurable org.xnio.Option java.lang.Object
      StackMap stack: java.io.IOException
            pop
         5: .line 813
            aload 2 /* defaultValue */
            areturn
        end local 2 // java.lang.Object defaultValue
        end local 1 // org.xnio.Option option
        end local 0 // org.xnio.channels.Configurable configurable
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0  configurable  Lorg/xnio/channels/Configurable;
            0    6     1        option  Lorg/xnio/Option<TT;>;
            0    6     2  defaultValue  TT;
            1    4     3         value  TT;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Lorg/xnio/channels/Configurable;Lorg/xnio/Option<TT;>;TT;)TT;
    MethodParameters:
              Name  Flags
      configurable  
      option        
      defaultValue  

  public static boolean getOption(org.xnio.channels.Configurable, org.xnio.Option<java.lang.Boolean>, );
    descriptor: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option;Z)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.xnio.channels.Configurable configurable
        start local 1 // org.xnio.Option option
        start local 2 // boolean defaultValue
         0: .line 828
            aload 0 /* configurable */
            aload 1 /* option */
            invokeinterface org.xnio.channels.Configurable.getOption:(Lorg/xnio/Option;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            astore 3 /* value */
        start local 3 // java.lang.Boolean value
         1: .line 829
            aload 3 /* value */
            ifnonnull 2
            iload 2 /* defaultValue */
            goto 3
      StackMap locals: java.lang.Boolean
      StackMap stack:
         2: aload 3 /* value */
            invokevirtual java.lang.Boolean.booleanValue:()Z
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 3 // java.lang.Boolean value
         4: .line 830
      StackMap locals: org.xnio.channels.Configurable org.xnio.Option int
      StackMap stack: java.io.IOException
            pop
         5: .line 831
            iload 2 /* defaultValue */
            ireturn
        end local 2 // boolean defaultValue
        end local 1 // org.xnio.Option option
        end local 0 // org.xnio.channels.Configurable configurable
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0  configurable  Lorg/xnio/channels/Configurable;
            0    6     1        option  Lorg/xnio/Option<Ljava/lang/Boolean;>;
            0    6     2  defaultValue  Z
            1    4     3         value  Ljava/lang/Boolean;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.IOException
    Signature: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option<Ljava/lang/Boolean;>;Z)Z
    MethodParameters:
              Name  Flags
      configurable  
      option        
      defaultValue  

  public static int getOption(org.xnio.channels.Configurable, org.xnio.Option<java.lang.Integer>, );
    descriptor: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option;I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.xnio.channels.Configurable configurable
        start local 1 // org.xnio.Option option
        start local 2 // int defaultValue
         0: .line 846
            aload 0 /* configurable */
            aload 1 /* option */
            invokeinterface org.xnio.channels.Configurable.getOption:(Lorg/xnio/Option;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 3 /* value */
        start local 3 // java.lang.Integer value
         1: .line 847
            aload 3 /* value */
            ifnonnull 2
            iload 2 /* defaultValue */
            goto 3
      StackMap locals: java.lang.Integer
      StackMap stack:
         2: aload 3 /* value */
            invokevirtual java.lang.Integer.intValue:()I
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 3 // java.lang.Integer value
         4: .line 848
      StackMap locals: org.xnio.channels.Configurable org.xnio.Option int
      StackMap stack: java.io.IOException
            pop
         5: .line 849
            iload 2 /* defaultValue */
            ireturn
        end local 2 // int defaultValue
        end local 1 // org.xnio.Option option
        end local 0 // org.xnio.channels.Configurable configurable
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0  configurable  Lorg/xnio/channels/Configurable;
            0    6     1        option  Lorg/xnio/Option<Ljava/lang/Integer;>;
            0    6     2  defaultValue  I
            1    4     3         value  Ljava/lang/Integer;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.IOException
    Signature: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option<Ljava/lang/Integer;>;I)I
    MethodParameters:
              Name  Flags
      configurable  
      option        
      defaultValue  

  public static long getOption(org.xnio.channels.Configurable, org.xnio.Option<java.lang.Long>, );
    descriptor: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.xnio.channels.Configurable configurable
        start local 1 // org.xnio.Option option
        start local 2 // long defaultValue
         0: .line 864
            aload 0 /* configurable */
            aload 1 /* option */
            invokeinterface org.xnio.channels.Configurable.getOption:(Lorg/xnio/Option;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 4 /* value */
        start local 4 // java.lang.Long value
         1: .line 865
            aload 4 /* value */
            ifnonnull 2
            lload 2 /* defaultValue */
            goto 3
      StackMap locals: java.lang.Long
      StackMap stack:
         2: aload 4 /* value */
            invokevirtual java.lang.Long.longValue:()J
      StackMap locals:
      StackMap stack: long
         3: lreturn
        end local 4 // java.lang.Long value
         4: .line 866
      StackMap locals: org.xnio.channels.Configurable org.xnio.Option long
      StackMap stack: java.io.IOException
            pop
         5: .line 867
            lload 2 /* defaultValue */
            lreturn
        end local 2 // long defaultValue
        end local 1 // org.xnio.Option option
        end local 0 // org.xnio.channels.Configurable configurable
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0  configurable  Lorg/xnio/channels/Configurable;
            0    6     1        option  Lorg/xnio/Option<Ljava/lang/Long;>;
            0    6     2  defaultValue  J
            1    4     4         value  Ljava/lang/Long;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.IOException
    Signature: (Lorg/xnio/channels/Configurable;Lorg/xnio/Option<Ljava/lang/Long;>;J)J
    MethodParameters:
              Name  Flags
      configurable  
      option        
      defaultValue  

  public static <T extends java.nio.channels.Channel> T unwrap(java.lang.Class<T>, java.nio.channels.Channel);
    descriptor: (Ljava/lang/Class;Ljava/nio/channels/Channel;)Ljava/nio/channels/Channel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class targetType
        start local 1 // java.nio.channels.Channel channel
         0: .line 882
      StackMap locals:
      StackMap stack:
            aload 1 /* channel */
            ifnonnull 2
         1: .line 883
            aconst_null
            areturn
         2: .line 884
      StackMap locals:
      StackMap stack:
            aload 0 /* targetType */
            aload 1 /* channel */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 885
            aload 0 /* targetType */
            aload 1 /* channel */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.nio.channels.Channel
            areturn
         4: .line 886
      StackMap locals:
      StackMap stack:
            aload 1 /* channel */
            instanceof org.xnio.channels.WrappedChannel
            ifeq 7
         5: .line 887
            aload 1 /* channel */
            checkcast org.xnio.channels.WrappedChannel
            invokeinterface org.xnio.channels.WrappedChannel.getChannel:()Ljava/nio/channels/Channel;
            astore 1 /* channel */
         6: .line 888
            goto 0
         7: .line 889
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.nio.channels.Channel channel
        end local 0 // java.lang.Class targetType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0  targetType  Ljava/lang/Class<TT;>;
            0    8     1     channel  Ljava/nio/channels/Channel;
    Signature: <T::Ljava/nio/channels/Channel;>(Ljava/lang/Class<TT;>;Ljava/nio/channels/Channel;)TT;
    MethodParameters:
            Name  Flags
      targetType  
      channel     

  public static long drain(org.xnio.channels.StreamSourceChannel, long);
    descriptor: (Lorg/xnio/channels/StreamSourceChannel;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // org.xnio.channels.StreamSourceChannel channel
        start local 1 // long count
         0: .line 906
            lconst_0
            lstore 3 /* total */
        start local 3 // long total
         1: .line 908
            aconst_null
            astore 8 /* buffer */
        start local 8 // java.nio.ByteBuffer buffer
         2: .line 910
      StackMap locals: org.xnio.channels.StreamSourceChannel long long top top top java.nio.ByteBuffer
      StackMap stack:
            lload 1 /* count */
            lconst_0
            lcmp
            ifne 3
            lload 3 /* total */
            lreturn
         3: .line 911
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
            ifnull 12
         4: .line 912
            goto 10
         5: .line 913
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            lconst_0
            lload 1 /* count */
            getstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.transferTo:(JJLjava/nio/channels/FileChannel;)J
            dup2
            lstore 5 /* lres */
        start local 5 // long lres
         6: lconst_0
            lcmp
            ifne 8
         7: .line 914
            goto 11
         8: .line 916
      StackMap locals: org.xnio.channels.StreamSourceChannel long long long top java.nio.ByteBuffer
      StackMap stack:
            lload 3 /* total */
            lload 5 /* lres */
            ladd
            lstore 3 /* total */
         9: .line 917
            lload 1 /* count */
            lload 5 /* lres */
            lsub
            lstore 1 /* count */
        end local 5 // long lres
        10: .line 912
      StackMap locals: org.xnio.channels.StreamSourceChannel long long top top top java.nio.ByteBuffer
      StackMap stack:
            lload 1 /* count */
            lconst_0
            lcmp
            ifgt 5
        11: .line 920
      StackMap locals:
      StackMap stack:
            lload 3 /* total */
            lconst_0
            lcmp
            ifle 12
            lload 3 /* total */
            lreturn
        12: .line 922
      StackMap locals:
      StackMap stack:
            aload 8 /* buffer */
            ifnonnull 13
            getstatic org.xnio.channels.Channels.DRAIN_BUFFER:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        13: .line 923
      StackMap locals:
      StackMap stack:
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            i2l
            lload 1 /* count */
            lcmp
            ifle 14
            aload 8 /* buffer */
            lload 1 /* count */
            l2i
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        14: .line 924
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 8 /* buffer */
            invokeinterface org.xnio.channels.StreamSourceChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 7 /* ires */
        start local 7 // int ires
        15: .line 925
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        16: .line 926
            iload 7 /* ires */
            tableswitch { // -1 - 0
                   -1: 17
                    0: 20
              default: 21
          }
        17: .line 927
      StackMap locals: org.xnio.channels.StreamSourceChannel long long top top int java.nio.ByteBuffer
      StackMap stack:
            lload 3 /* total */
            lconst_0
            lcmp
            ifne 18
            ldc -1
            goto 19
      StackMap locals:
      StackMap stack:
        18: lload 3 /* total */
      StackMap locals:
      StackMap stack: long
        19: lreturn
        20: .line 928
      StackMap locals:
      StackMap stack:
            lload 3 /* total */
            lreturn
        21: .line 929
      StackMap locals:
      StackMap stack:
            lload 3 /* total */
            iload 7 /* ires */
            i2l
            ladd
            lstore 3 /* total */
            lload 1 /* count */
            iload 7 /* ires */
            i2l
            lsub
            lstore 1 /* count */
        end local 7 // int ires
        22: .line 909
            goto 2
        end local 8 // java.nio.ByteBuffer buffer
        end local 3 // long total
        end local 1 // long count
        end local 0 // org.xnio.channels.StreamSourceChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0  channel  Lorg/xnio/channels/StreamSourceChannel;
            0   23     1    count  J
            1   23     3    total  J
            6   10     5     lres  J
           15   22     7     ires  I
            2   23     8   buffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      count    

  public static long drain(java.nio.channels.ReadableByteChannel, long);
    descriptor: (Ljava/nio/channels/ReadableByteChannel;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // java.nio.channels.ReadableByteChannel channel
        start local 1 // long count
         0: .line 943
            aload 0 /* channel */
            instanceof org.xnio.channels.StreamSourceChannel
            ifeq 2
         1: .line 944
            aload 0 /* channel */
            checkcast org.xnio.channels.StreamSourceChannel
            lload 1 /* count */
            invokestatic org.xnio.channels.Channels.drain:(Lorg/xnio/channels/StreamSourceChannel;J)J
            lreturn
         2: .line 946
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 3 /* total */
        start local 3 // long total
         3: .line 948
            aconst_null
            astore 8 /* buffer */
        start local 8 // java.nio.ByteBuffer buffer
         4: .line 950
      StackMap locals: java.nio.channels.ReadableByteChannel long long top top top java.nio.ByteBuffer
      StackMap stack:
            lload 1 /* count */
            lconst_0
            lcmp
            ifne 5
            lload 3 /* total */
            lreturn
         5: .line 951
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
            ifnull 14
         6: .line 952
            goto 12
         7: .line 953
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
            aload 0 /* channel */
            lconst_0
            lload 1 /* count */
            invokevirtual java.nio.channels.FileChannel.transferFrom:(Ljava/nio/channels/ReadableByteChannel;JJ)J
            dup2
            lstore 5 /* lres */
        start local 5 // long lres
         8: lconst_0
            lcmp
            ifne 10
         9: .line 954
            goto 13
        10: .line 956
      StackMap locals: java.nio.channels.ReadableByteChannel long long long top java.nio.ByteBuffer
      StackMap stack:
            lload 3 /* total */
            lload 5 /* lres */
            ladd
            lstore 3 /* total */
        11: .line 957
            lload 1 /* count */
            lload 5 /* lres */
            lsub
            lstore 1 /* count */
        end local 5 // long lres
        12: .line 952
      StackMap locals: java.nio.channels.ReadableByteChannel long long top top top java.nio.ByteBuffer
      StackMap stack:
            lload 1 /* count */
            lconst_0
            lcmp
            ifgt 7
        13: .line 960
      StackMap locals:
      StackMap stack:
            lload 3 /* total */
            lconst_0
            lcmp
            ifle 14
            lload 3 /* total */
            lreturn
        14: .line 962
      StackMap locals:
      StackMap stack:
            aload 8 /* buffer */
            ifnonnull 15
            getstatic org.xnio.channels.Channels.DRAIN_BUFFER:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 8 /* buffer */
        15: .line 963
      StackMap locals:
      StackMap stack:
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            i2l
            lload 1 /* count */
            lcmp
            ifle 16
            aload 8 /* buffer */
            lload 1 /* count */
            l2i
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        16: .line 964
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 8 /* buffer */
            invokeinterface java.nio.channels.ReadableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 7 /* ires */
        start local 7 // int ires
        17: .line 965
            aload 8 /* buffer */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        18: .line 966
            iload 7 /* ires */
            tableswitch { // -1 - 0
                   -1: 19
                    0: 22
              default: 23
          }
        19: .line 967
      StackMap locals: java.nio.channels.ReadableByteChannel long long top top int java.nio.ByteBuffer
      StackMap stack:
            lload 3 /* total */
            lconst_0
            lcmp
            ifne 20
            ldc -1
            goto 21
      StackMap locals:
      StackMap stack:
        20: lload 3 /* total */
      StackMap locals:
      StackMap stack: long
        21: lreturn
        22: .line 968
      StackMap locals:
      StackMap stack:
            lload 3 /* total */
            lreturn
        23: .line 969
      StackMap locals:
      StackMap stack:
            lload 3 /* total */
            iload 7 /* ires */
            i2l
            ladd
            lstore 3 /* total */
            lload 1 /* count */
            iload 7 /* ires */
            i2l
            lsub
            lstore 1 /* count */
        end local 7 // int ires
        24: .line 949
            goto 4
        end local 8 // java.nio.ByteBuffer buffer
        end local 3 // long total
        end local 1 // long count
        end local 0 // java.nio.channels.ReadableByteChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   25     0  channel  Ljava/nio/channels/ReadableByteChannel;
            0   25     1    count  J
            3   25     3    total  J
            8   12     5     lres  J
           17   24     7     ires  I
            4   25     8   buffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      count    

  public static long drain(java.nio.channels.FileChannel, long, long);
    descriptor: (Ljava/nio/channels/FileChannel;JJ)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=3
        start local 0 // java.nio.channels.FileChannel channel
        start local 1 // long position
        start local 3 // long count
         0: .line 986
            aload 0 /* channel */
            instanceof org.xnio.channels.StreamSourceChannel
            ifeq 2
         1: .line 987
            aload 0 /* channel */
            checkcast org.xnio.channels.StreamSourceChannel
            lload 3 /* count */
            invokestatic org.xnio.channels.Channels.drain:(Lorg/xnio/channels/StreamSourceChannel;J)J
            lreturn
         2: .line 989
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 5 /* total */
        start local 5 // long total
         3: .line 991
            aconst_null
            astore 10 /* buffer */
        start local 10 // java.nio.ByteBuffer buffer
         4: .line 993
      StackMap locals: java.nio.channels.FileChannel long long long top top top java.nio.ByteBuffer
      StackMap stack:
            lload 3 /* count */
            lconst_0
            lcmp
            ifne 5
            lload 5 /* total */
            lreturn
         5: .line 994
      StackMap locals:
      StackMap stack:
            getstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
            ifnull 14
         6: .line 995
            goto 12
         7: .line 996
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            lload 1 /* position */
            lload 3 /* count */
            getstatic org.xnio.channels.Channels.NULL_FILE_CHANNEL:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.transferTo:(JJLjava/nio/channels/WritableByteChannel;)J
            dup2
            lstore 7 /* lres */
        start local 7 // long lres
         8: lconst_0
            lcmp
            ifne 10
         9: .line 997
            goto 13
        10: .line 999
      StackMap locals: java.nio.channels.FileChannel long long long long top java.nio.ByteBuffer
      StackMap stack:
            lload 5 /* total */
            lload 7 /* lres */
            ladd
            lstore 5 /* total */
        11: .line 1000
            lload 3 /* count */
            lload 7 /* lres */
            lsub
            lstore 3 /* count */
        end local 7 // long lres
        12: .line 995
      StackMap locals: java.nio.channels.FileChannel long long long top top top java.nio.ByteBuffer
      StackMap stack:
            lload 3 /* count */
            lconst_0
            lcmp
            ifgt 7
        13: .line 1003
      StackMap locals:
      StackMap stack:
            lload 5 /* total */
            lconst_0
            lcmp
            ifle 14
            lload 5 /* total */
            lreturn
        14: .line 1005
      StackMap locals:
      StackMap stack:
            aload 10 /* buffer */
            ifnonnull 15
            getstatic org.xnio.channels.Channels.DRAIN_BUFFER:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 10 /* buffer */
        15: .line 1006
      StackMap locals:
      StackMap stack:
            aload 10 /* buffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            i2l
            lload 3 /* count */
            lcmp
            ifle 16
            aload 10 /* buffer */
            lload 3 /* count */
            l2i
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        16: .line 1007
      StackMap locals:
      StackMap stack:
            aload 0 /* channel */
            aload 10 /* buffer */
            invokevirtual java.nio.channels.FileChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 9 /* ires */
        start local 9 // int ires
        17: .line 1008
            aload 10 /* buffer */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        18: .line 1009
            iload 9 /* ires */
            tableswitch { // -1 - 0
                   -1: 19
                    0: 22
              default: 23
          }
        19: .line 1010
      StackMap locals: java.nio.channels.FileChannel long long long top top int java.nio.ByteBuffer
      StackMap stack:
            lload 5 /* total */
            lconst_0
            lcmp
            ifne 20
            ldc -1
            goto 21
      StackMap locals:
      StackMap stack:
        20: lload 5 /* total */
      StackMap locals:
      StackMap stack: long
        21: lreturn
        22: .line 1011
      StackMap locals:
      StackMap stack:
            lload 5 /* total */
            lreturn
        23: .line 1012
      StackMap locals:
      StackMap stack:
            lload 5 /* total */
            iload 9 /* ires */
            i2l
            ladd
            lstore 5 /* total */
        end local 9 // int ires
        24: .line 992
            goto 4
        end local 10 // java.nio.ByteBuffer buffer
        end local 5 // long total
        end local 3 // long count
        end local 1 // long position
        end local 0 // java.nio.channels.FileChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0   channel  Ljava/nio/channels/FileChannel;
            0   25     1  position  J
            0   25     3     count  J
            3   25     5     total  J
            8   12     7      lres  J
           17   24     9      ires  I
            4   25    10    buffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      channel   
      position  
      count     

  public static void resumeReadsAsync(org.xnio.channels.SuspendableReadChannel);
    descriptor: (Lorg/xnio/channels/SuspendableReadChannel;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.xnio.channels.SuspendableReadChannel channel
         0: .line 1025
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableReadChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            astore 1 /* ioThread */
        start local 1 // org.xnio.XnioIoThread ioThread
         1: .line 1026
            aload 1 /* ioThread */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            if_acmpne 4
         2: .line 1027
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableReadChannel.resumeReads:()V
         3: .line 1028
            goto 5
         4: .line 1029
      StackMap locals: org.xnio.XnioIoThread
      StackMap stack:
            aload 1 /* ioThread */
            new org.xnio.channels.Channels$3
            dup
            aload 0 /* channel */
            invokespecial org.xnio.channels.Channels$3.<init>:(Lorg/xnio/channels/SuspendableReadChannel;)V
            invokevirtual org.xnio.XnioIoThread.execute:(Ljava/lang/Runnable;)V
         5: .line 1035
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.xnio.XnioIoThread ioThread
        end local 0 // org.xnio.channels.SuspendableReadChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0   channel  Lorg/xnio/channels/SuspendableReadChannel;
            1    6     1  ioThread  Lorg/xnio/XnioIoThread;
    MethodParameters:
         Name  Flags
      channel  final

  public static void resumeWritesAsync(org.xnio.channels.SuspendableWriteChannel);
    descriptor: (Lorg/xnio/channels/SuspendableWriteChannel;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.xnio.channels.SuspendableWriteChannel channel
         0: .line 1044
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            astore 1 /* ioThread */
        start local 1 // org.xnio.XnioIoThread ioThread
         1: .line 1045
            aload 1 /* ioThread */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            if_acmpne 4
         2: .line 1046
            aload 0 /* channel */
            invokeinterface org.xnio.channels.SuspendableWriteChannel.resumeWrites:()V
         3: .line 1047
            goto 5
         4: .line 1048
      StackMap locals: org.xnio.XnioIoThread
      StackMap stack:
            aload 1 /* ioThread */
            new org.xnio.channels.Channels$4
            dup
            aload 0 /* channel */
            invokespecial org.xnio.channels.Channels$4.<init>:(Lorg/xnio/channels/SuspendableWriteChannel;)V
            invokevirtual org.xnio.XnioIoThread.execute:(Ljava/lang/Runnable;)V
         5: .line 1054
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.xnio.XnioIoThread ioThread
        end local 0 // org.xnio.channels.SuspendableWriteChannel channel
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0   channel  Lorg/xnio/channels/SuspendableWriteChannel;
            1    6     1  ioThread  Lorg/xnio/XnioIoThread;
    MethodParameters:
         Name  Flags
      channel  final

  public static int writeFinalBasic(org.xnio.channels.StreamSinkChannel, java.nio.ByteBuffer);
    descriptor: (Lorg/xnio/channels/StreamSinkChannel;Ljava/nio/ByteBuffer;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.xnio.channels.StreamSinkChannel channel
        start local 1 // java.nio.ByteBuffer src
         0: .line 1066
            aload 0 /* channel */
            aload 1 /* src */
            invokeinterface org.xnio.channels.StreamSinkChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 2 /* res */
        start local 2 // int res
         1: .line 1067
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 3
         2: .line 1068
            aload 0 /* channel */
            invokeinterface org.xnio.channels.StreamSinkChannel.shutdownWrites:()V
         3: .line 1070
      StackMap locals: int
      StackMap stack:
            iload 2 /* res */
            ireturn
        end local 2 // int res
        end local 1 // java.nio.ByteBuffer src
        end local 0 // org.xnio.channels.StreamSinkChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  channel  Lorg/xnio/channels/StreamSinkChannel;
            0    4     1      src  Ljava/nio/ByteBuffer;
            1    4     2      res  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      src      

  public static long writeFinalBasic(org.xnio.channels.StreamSinkChannel, java.nio.ByteBuffer[], int, int);
    descriptor: (Lorg/xnio/channels/StreamSinkChannel;[Ljava/nio/ByteBuffer;II)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.xnio.channels.StreamSinkChannel channel
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 1085
            aload 0 /* channel */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokeinterface org.xnio.channels.StreamSinkChannel.write:([Ljava/nio/ByteBuffer;II)J
            lstore 4 /* res */
        start local 4 // long res
         1: .line 1086
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic org.xnio.Buffers.hasRemaining:([Ljava/nio/Buffer;II)Z
            ifne 3
         2: .line 1087
            aload 0 /* channel */
            invokeinterface org.xnio.channels.StreamSinkChannel.shutdownWrites:()V
         3: .line 1089
      StackMap locals: long
      StackMap stack:
            lload 4 /* res */
            lreturn
        end local 4 // long res
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // org.xnio.channels.StreamSinkChannel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  channel  Lorg/xnio/channels/StreamSinkChannel;
            0    4     1     srcs  [Ljava/nio/ByteBuffer;
            0    4     2   offset  I
            0    4     3   length  I
            1    4     4      res  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      channel  
      srcs     
      offset   
      length   
}
SourceFile: "Channels.java"
NestMembers:
  org.xnio.channels.Channels$1  org.xnio.channels.Channels$2  org.xnio.channels.Channels$3  org.xnio.channels.Channels$4
InnerClasses:
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  org.xnio.channels.Channels$1
  org.xnio.channels.Channels$2
  org.xnio.channels.Channels$3
  org.xnio.channels.Channels$4