public abstract class io.undertow.channels.DetachableStreamSourceChannel implements org.xnio.channels.StreamSourceChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.undertow.channels.DetachableStreamSourceChannel
  super_class: java.lang.Object
{
  protected final org.xnio.channels.StreamSourceChannel delegate;
    descriptor: Lorg/xnio/channels/StreamSourceChannel;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected org.xnio.ChannelListener$SimpleSetter<io.undertow.channels.DetachableStreamSourceChannel> readSetter;
    descriptor: Lorg/xnio/ChannelListener$SimpleSetter;
    flags: (0x0004) ACC_PROTECTED
    Signature: Lorg/xnio/ChannelListener$SimpleSetter<Lio/undertow/channels/DetachableStreamSourceChannel;>;

  protected org.xnio.ChannelListener$SimpleSetter<io.undertow.channels.DetachableStreamSourceChannel> closeSetter;
    descriptor: Lorg/xnio/ChannelListener$SimpleSetter;
    flags: (0x0004) ACC_PROTECTED
    Signature: Lorg/xnio/ChannelListener$SimpleSetter<Lio/undertow/channels/DetachableStreamSourceChannel;>;

  public void <init>(org.xnio.channels.StreamSourceChannel);
    descriptor: (Lorg/xnio/channels/StreamSourceChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // org.xnio.channels.StreamSourceChannel delegate
         0: .line 52
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 53
            aload 0 /* this */
            aload 1 /* delegate */
            putfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
         2: .line 54
            return
        end local 1 // org.xnio.channels.StreamSourceChannel delegate
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1  delegate  Lorg/xnio/channels/StreamSourceChannel;
    MethodParameters:
          Name  Flags
      delegate  final

  protected abstract boolean isFinished();
    descriptor: ()Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public void resumeReads();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 60
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 61
            return
         2: .line 63
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.resumeReads:()V
         3: .line 64
            return
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public long transferTo(long, long, java.nio.channels.FileChannel);
    descriptor: (JJLjava/nio/channels/FileChannel;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // long position
        start local 3 // long count
        start local 5 // java.nio.channels.FileChannel target
         0: .line 67
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 68
            ldc -1
            lreturn
         2: .line 70
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            lload 1 /* position */
            lload 3 /* count */
            aload 5 /* target */
            invokeinterface org.xnio.channels.StreamSourceChannel.transferTo:(JJLjava/nio/channels/FileChannel;)J
            lreturn
        end local 5 // java.nio.channels.FileChannel target
        end local 3 // long count
        end local 1 // long position
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1  position  J
            0    3     3     count  J
            0    3     5    target  Ljava/nio/channels/FileChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  final
      count     final
      target    final

  public void awaitReadable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 74
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 75
            return
         2: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.awaitReadable:()V
         3: .line 78
            return
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
    Exceptions:
      throws java.io.IOException

  public void suspendReads();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 81
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 82
            return
         2: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.suspendReads:()V
         3: .line 85
            return
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public long transferTo(long, java.nio.ByteBuffer, org.xnio.channels.StreamSinkChannel);
    descriptor: (JLjava/nio/ByteBuffer;Lorg/xnio/channels/StreamSinkChannel;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // long count
        start local 3 // java.nio.ByteBuffer throughBuffer
        start local 4 // org.xnio.channels.StreamSinkChannel target
         0: .line 88
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 89
            ldc -1
            lreturn
         2: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            lload 1 /* count */
            aload 3 /* throughBuffer */
            aload 4 /* target */
            invokeinterface org.xnio.channels.StreamSourceChannel.transferTo:(JLjava/nio/ByteBuffer;Lorg/xnio/channels/StreamSinkChannel;)J
            lreturn
        end local 4 // org.xnio.channels.StreamSinkChannel target
        end local 3 // java.nio.ByteBuffer throughBuffer
        end local 1 // long count
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1          count  J
            0    3     3  throughBuffer  Ljava/nio/ByteBuffer;
            0    3     4         target  Lorg/xnio/channels/StreamSinkChannel;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      count          final
      throughBuffer  final
      target         final

  public org.xnio.XnioWorker getWorker();
    descriptor: ()Lorg/xnio/XnioWorker;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 95
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.getWorker:()Lorg/xnio/XnioWorker;
            areturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public boolean isReadResumed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 99
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 100
            iconst_0
            ireturn
         2: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.isReadResumed:()Z
            ireturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public <T> T setOption(org.xnio.Option<T>, );
    descriptor: (Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // org.xnio.Option option
        start local 2 // java.lang.Object value
         0: .line 107
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 108
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            aload 1 /* option */
            aload 2 /* value */
            invokeinterface org.xnio.channels.StreamSourceChannel.setOption:(Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object value
        end local 1 // org.xnio.Option option
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1  option  Lorg/xnio/Option<TT;>;
            0    3     2   value  TT;
    Exceptions:
      throws java.lang.IllegalArgumentException, java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Lorg/xnio/Option<TT;>;TT;)TT;
    MethodParameters:
        Name  Flags
      option  final
      value   final

  public boolean supportsOption(org.xnio.Option<?>);
    descriptor: (Lorg/xnio/Option;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // org.xnio.Option option
         0: .line 114
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            aload 1 /* option */
            invokeinterface org.xnio.channels.StreamSourceChannel.supportsOption:(Lorg/xnio/Option;)Z
            ireturn
        end local 1 // org.xnio.Option option
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    1     1  option  Lorg/xnio/Option<*>;
    Signature: (Lorg/xnio/Option<*>;)Z
    MethodParameters:
        Name  Flags
      option  final

  public void shutdownReads();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 118
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 119
            return
         2: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.shutdownReads:()V
         3: .line 122
            return
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
    Exceptions:
      throws java.io.IOException

  public org.xnio.ChannelListener$Setter<? extends org.xnio.channels.StreamSourceChannel> getReadSetter();
    descriptor: ()Lorg/xnio/ChannelListener$Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 125
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.readSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            ifnonnull 7
         1: .line 126
            aload 0 /* this */
            new org.xnio.ChannelListener$SimpleSetter
            dup
            invokespecial org.xnio.ChannelListener$SimpleSetter.<init>:()V
            putfield io.undertow.channels.DetachableStreamSourceChannel.readSetter:Lorg/xnio/ChannelListener$SimpleSetter;
         2: .line 127
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifne 7
         3: .line 128
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            instanceof org.xnio.conduits.ConduitStreamSourceChannel
            ifeq 6
         4: .line 129
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            checkcast org.xnio.conduits.ConduitStreamSourceChannel
            new io.undertow.channels.DetachableStreamSourceChannel$SetterDelegatingListener
            dup
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.readSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            aload 0 /* this */
            invokespecial io.undertow.channels.DetachableStreamSourceChannel$SetterDelegatingListener.<init>:(Lorg/xnio/ChannelListener$SimpleSetter;Lorg/xnio/channels/StreamSourceChannel;)V
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setReadListener:(Lorg/xnio/ChannelListener;)V
         5: .line 130
            goto 7
         6: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
            new io.undertow.channels.DetachableStreamSourceChannel$SetterDelegatingListener
            dup
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.readSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            aload 0 /* this */
            invokespecial io.undertow.channels.DetachableStreamSourceChannel$SetterDelegatingListener.<init>:(Lorg/xnio/ChannelListener$SimpleSetter;Lorg/xnio/channels/StreamSourceChannel;)V
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         7: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.readSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            areturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
    Signature: ()Lorg/xnio/ChannelListener$Setter<+Lorg/xnio/channels/StreamSourceChannel;>;

  public boolean isOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 139
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 140
            iconst_0
            ireturn
         2: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.isOpen:()Z
            ireturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public long read(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // java.nio.ByteBuffer[] dsts
         0: .line 146
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 147
            ldc -1
            lreturn
         2: .line 149
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            aload 1 /* dsts */
            invokeinterface org.xnio.channels.StreamSourceChannel.read:([Ljava/nio/ByteBuffer;)J
            lreturn
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1  dsts  [Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      dsts  final

  public long read(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // java.nio.ByteBuffer[] dsts
        start local 2 // int offset
        start local 3 // int length
         0: .line 153
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 154
            ldc -1
            lreturn
         2: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            invokeinterface org.xnio.channels.StreamSourceChannel.read:([Ljava/nio/ByteBuffer;II)J
            lreturn
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1    dsts  [Ljava/nio/ByteBuffer;
            0    3     2  offset  I
            0    3     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      dsts    final
      offset  final
      length  final

  public void wakeupReads();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 160
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 161
            return
         2: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.wakeupReads:()V
         3: .line 164
            return
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public org.xnio.XnioExecutor getReadThread();
    descriptor: ()Lorg/xnio/XnioExecutor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 167
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.getReadThread:()Lorg/xnio/XnioExecutor;
            areturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;

  public void awaitReadable(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 171
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 172
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 174
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            lload 1 /* time */
            aload 3 /* timeUnit */
            invokeinterface org.xnio.channels.StreamSourceChannel.awaitReadable:(JLjava/util/concurrent/TimeUnit;)V
         3: .line 175
            return
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    4     1      time  J
            0    4     3  timeUnit  Ljava/util/concurrent/TimeUnit;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      time      final
      timeUnit  final

  public org.xnio.ChannelListener$Setter<? extends org.xnio.channels.StreamSourceChannel> getCloseSetter();
    descriptor: ()Lorg/xnio/ChannelListener$Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 178
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            ifnonnull 7
         1: .line 179
            aload 0 /* this */
            new org.xnio.ChannelListener$SimpleSetter
            dup
            invokespecial org.xnio.ChannelListener$SimpleSetter.<init>:()V
            putfield io.undertow.channels.DetachableStreamSourceChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
         2: .line 180
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifne 7
         3: .line 181
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            instanceof org.xnio.conduits.ConduitStreamSourceChannel
            ifeq 6
         4: .line 182
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            checkcast org.xnio.conduits.ConduitStreamSourceChannel
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            invokestatic org.xnio.ChannelListeners.delegatingChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener$SimpleSetter;)Lorg/xnio/ChannelListener;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setCloseListener:(Lorg/xnio/ChannelListener;)V
         5: .line 183
            goto 7
         6: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.getCloseSetter:()Lorg/xnio/ChannelListener$Setter;
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            invokestatic org.xnio.ChannelListeners.delegatingChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener$SimpleSetter;)Lorg/xnio/ChannelListener;
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
         7: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            areturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
    Signature: ()Lorg/xnio/ChannelListener$Setter<+Lorg/xnio/channels/StreamSourceChannel;>;

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 192
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 193
            return
         2: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.close:()V
         3: .line 196
            return
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
    Exceptions:
      throws java.io.IOException

  public <T> T getOption(org.xnio.Option<T>);
    descriptor: (Lorg/xnio/Option;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // org.xnio.Option option
         0: .line 199
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 200
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.streamIsClosed:()Ljava/io/IOException;
            athrow
         2: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            aload 1 /* option */
            invokeinterface org.xnio.channels.StreamSourceChannel.getOption:(Lorg/xnio/Option;)Ljava/lang/Object;
            areturn
        end local 1 // org.xnio.Option option
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1  option  Lorg/xnio/Option<TT;>;
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Lorg/xnio/Option<TT;>;)TT;
    MethodParameters:
        Name  Flags
      option  final

  public int read(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
        start local 1 // java.nio.ByteBuffer dst
         0: .line 206
            aload 0 /* this */
            invokevirtual io.undertow.channels.DetachableStreamSourceChannel.isFinished:()Z
            ifeq 2
         1: .line 207
            iconst_m1
            ireturn
         2: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            aload 1 /* dst */
            invokeinterface org.xnio.channels.StreamSourceChannel.read:(Ljava/nio/ByteBuffer;)I
            ireturn
        end local 1 // java.nio.ByteBuffer dst
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
            0    3     1   dst  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      dst   final

  public org.xnio.XnioIoThread getIoThread();
    descriptor: ()Lorg/xnio/XnioIoThread;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.channels.DetachableStreamSourceChannel this
         0: .line 214
            aload 0 /* this */
            getfield io.undertow.channels.DetachableStreamSourceChannel.delegate:Lorg/xnio/channels/StreamSourceChannel;
            invokeinterface org.xnio.channels.StreamSourceChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            areturn
        end local 0 // io.undertow.channels.DetachableStreamSourceChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/channels/DetachableStreamSourceChannel;
}
SourceFile: "DetachableStreamSourceChannel.java"
NestMembers:
  io.undertow.channels.DetachableStreamSourceChannel$SetterDelegatingListener
InnerClasses:
  private SetterDelegatingListener = io.undertow.channels.DetachableStreamSourceChannel$SetterDelegatingListener of io.undertow.channels.DetachableStreamSourceChannel
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  public SimpleSetter = org.xnio.ChannelListener$SimpleSetter of org.xnio.ChannelListener