public abstract class io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel<C extends io.undertow.server.protocol.framed.AbstractFramedChannel<C, R, S>, R extends io.undertow.server.protocol.framed.AbstractFramedStreamSourceChannel<C, R, S>, S extends io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel<C, R, S>> implements org.xnio.channels.StreamSinkChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel
  super_class: java.lang.Object
{
  private static final io.undertow.connector.PooledByteBuffer EMPTY_BYTE_BUFFER;
    descriptor: Lio/undertow/connector/PooledByteBuffer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final C channel;
    descriptor: Lio/undertow/server/protocol/framed/AbstractFramedChannel;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: TC;

  private final org.xnio.ChannelListener$SimpleSetter<S> writeSetter;
    descriptor: Lorg/xnio/ChannelListener$SimpleSetter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/xnio/ChannelListener$SimpleSetter<TS;>;

  private final org.xnio.ChannelListener$SimpleSetter<S> closeSetter;
    descriptor: Lorg/xnio/ChannelListener$SimpleSetter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/xnio/ChannelListener$SimpleSetter<TS;>;

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

  private volatile int state;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean readyForFlush;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean fullyFlushed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean finalFrameQueued;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean broken;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int waiterCount;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile io.undertow.server.protocol.framed.SendFrameHeader header;
    descriptor: Lio/undertow/server/protocol/framed/SendFrameHeader;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile io.undertow.connector.PooledByteBuffer writeBuffer;
    descriptor: Lio/undertow/connector/PooledByteBuffer;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile io.undertow.connector.PooledByteBuffer body;
    descriptor: Lio/undertow/connector/PooledByteBuffer;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final int STATE_CLOSED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int STATE_WRITES_SHUTDOWN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int STATE_FIRST_DATA_WRITTEN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int STATE_PRE_WRITE_CALLED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  private volatile boolean bufferFull;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean writesResumed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int inListenerLoop;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel> inListenerLoopUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 60
            new io.undertow.util.ImmediatePooledByteBuffer
            dup
            iconst_0
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            invokespecial io.undertow.util.ImmediatePooledByteBuffer.<init>:(Ljava/nio/ByteBuffer;)V
            putstatic io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.EMPTY_BYTE_BUFFER:Lio/undertow/connector/PooledByteBuffer;
         1: .line 112
            ldc Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel;
            ldc "inListenerLoop"
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.inListenerLoopUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>();
    descriptor: (Lio/undertow/server/protocol/framed/AbstractFramedChannel;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // io.undertow.server.protocol.framed.AbstractFramedChannel channel
         0: .line 114
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            new org.xnio.ChannelListener$SimpleSetter
            dup
            invokespecial org.xnio.ChannelListener$SimpleSetter.<init>:()V
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
         2: .line 64
            aload 0 /* this */
            new org.xnio.ChannelListener$SimpleSetter
            dup
            invokespecial org.xnio.ChannelListener$SimpleSetter.<init>:()V
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
         3: .line 66
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
         4: .line 71
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         5: .line 96
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
         6: .line 115
            aload 0 /* this */
            aload 1 /* channel */
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
         7: .line 116
            return
        end local 1 // io.undertow.server.protocol.framed.AbstractFramedChannel channel
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    8     1  channel  TC;
    Signature: (TC;)V
    MethodParameters:
         Name  Flags
      channel  

  public long transferFrom(java.nio.channels.FileChannel, long, long);
    descriptor: (Ljava/nio/channels/FileChannel;JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.channels.FileChannel src
        start local 2 // long position
        start local 4 // long count
         0: .line 119
            aload 1 /* src */
            lload 2 /* position */
            lload 4 /* count */
            aload 0 /* this */
            invokevirtual java.nio.channels.FileChannel.transferTo:(JJLjava/nio/channels/WritableByteChannel;)J
            lreturn
        end local 4 // long count
        end local 2 // long position
        end local 1 // java.nio.channels.FileChannel src
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1       src  Ljava/nio/channels/FileChannel;
            0    1     2  position  J
            0    1     4     count  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      src       final
      position  final
      count     final

  public long transferFrom(org.xnio.channels.StreamSourceChannel, long, java.nio.ByteBuffer);
    descriptor: (Lorg/xnio/channels/StreamSourceChannel;JLjava/nio/ByteBuffer;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // org.xnio.channels.StreamSourceChannel source
        start local 2 // long count
        start local 4 // java.nio.ByteBuffer throughBuffer
         0: .line 123
            aload 1 /* source */
            lload 2 /* count */
            aload 4 /* throughBuffer */
            aload 0 /* this */
            invokestatic org.xnio.IoUtils.transfer:(Ljava/nio/channels/ReadableByteChannel;JLjava/nio/ByteBuffer;Ljava/nio/channels/WritableByteChannel;)J
            lreturn
        end local 4 // java.nio.ByteBuffer throughBuffer
        end local 2 // long count
        end local 1 // org.xnio.channels.StreamSourceChannel source
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1         source  Lorg/xnio/channels/StreamSourceChannel;
            0    1     2          count  J
            0    1     4  throughBuffer  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      source         final
      count          final
      throughBuffer  final

  public void suspendWrites();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 128
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writesResumed:Z
         1: .line 129
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  final io.undertow.server.protocol.framed.SendFrameHeader getFrameHeader();
    descriptor: ()Lio/undertow/server/protocol/framed/SendFrameHeader;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 144
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            ifnonnull 4
         1: .line 145
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.createFrameHeader:()Lio/undertow/server/protocol/framed/SendFrameHeader;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
         2: .line 146
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            ifnonnull 4
         3: .line 147
            aload 0 /* this */
            new io.undertow.server.protocol.framed.SendFrameHeader
            dup
            iconst_0
            aconst_null
            invokespecial io.undertow.server.protocol.framed.SendFrameHeader.<init>:(ILio/undertow/connector/PooledByteBuffer;)V
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
         4: .line 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Exceptions:
      throws java.io.IOException

  protected io.undertow.server.protocol.framed.SendFrameHeader createFrameHeader();
    descriptor: ()Lio/undertow/server/protocol/framed/SendFrameHeader;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 154
            aconst_null
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Exceptions:
      throws java.io.IOException

  final void preWrite();
    descriptor: ()V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 158
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 159
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            bipush 8
            invokestatic org.xnio.Bits.allAreClear:(II)Z
            ifeq 4
         2: .line 160
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            bipush 8
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         3: .line 161
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.preWriteTransform:(Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
         4: .line 158
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 164
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any

  protected io.undertow.connector.PooledByteBuffer preWriteTransform(io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/connector/PooledByteBuffer;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // io.undertow.connector.PooledByteBuffer body
         0: .line 167
            aload 1 /* body */
            areturn
        end local 1 // io.undertow.connector.PooledByteBuffer body
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  body  Lio/undertow/connector/PooledByteBuffer;
    MethodParameters:
      Name  Flags
      body  

  public boolean isWriteResumed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 172
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writesResumed:Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public void wakeupWrites();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 177
            aload 0 /* this */
            iconst_1
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.resumeWritesInternal:(Z)V
         1: .line 178
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public void resumeWrites();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 182
            aload 0 /* this */
            iconst_0
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.resumeWritesInternal:(Z)V
         1: .line 183
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  protected void resumeWritesInternal(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // boolean wakeup
         0: .line 186
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writesResumed:Z
            istore 2 /* alreadyResumed */
        start local 2 // boolean alreadyResumed
         1: .line 187
            iload 1 /* wakeup */
            ifne 3
            iload 2 /* alreadyResumed */
            ifeq 3
         2: .line 188
            return
         3: .line 190
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writesResumed:Z
         4: .line 191
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 6
            iload 1 /* wakeup */
            ifne 6
         5: .line 193
            return
         6: .line 196
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.inListenerLoopUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ifeq 8
         7: .line 197
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            new io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel$1
            dup
            aload 0 /* this */
            invokespecial io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel$1.<init>:(Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel;)V
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.runInIoThread:(Ljava/lang/Runnable;)V
         8: .line 231
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean alreadyResumed
        end local 1 // boolean wakeup
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    9     1          wakeup  Z
            1    9     2  alreadyResumed  Z
    MethodParameters:
        Name  Flags
      wakeup  

  public void shutdownWrites();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 235
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 236
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_2
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 2
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifeq 4
         2: .line 237
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         3: return
         4: .line 240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.queueFinalFrame:()V
         5: .line 241
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_2
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         6: .line 235
            aload 1
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 243
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           1     3       8  any
           4     7       8  any
           8     9       8  any
    Exceptions:
      throws java.io.IOException

  private void queueFinalFrame();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 246
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 247
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifne 12
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.fullyFlushed:Z
            ifne 12
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.allAreClear:(II)Z
            ifeq 12
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifne 12
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
            ifne 12
         2: .line 248
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 5
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnull 5
         3: .line 249
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.sendWriteBuffer:()V
         4: .line 250
            goto 7
      StackMap locals: java.lang.Object
      StackMap stack:
         5: aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 7
         6: .line 251
            aload 0 /* this */
            getstatic io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.EMPTY_BYTE_BUFFER:Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
         7: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
         8: .line 254
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_4
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         9: .line 255
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_2
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
        10: .line 256
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
        11: .line 257
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.queueFrame:(Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel;)V
        12: .line 246
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        13: goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: aload 1
            monitorexit
        15: athrow
        16: .line 260
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           1    13      14  any
          14    15      14  any
    Exceptions:
      throws java.io.IOException

  protected boolean isFinalFrameQueued();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 263
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public void awaitWritable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 268
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            if_acmpne 2
         1: .line 269
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.awaitCalledFromIoThread:()Ljava/io/IOException;
            athrow
         2: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 272
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 4
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifeq 6
         4: .line 273
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         5: return
         6: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 17
         7: .line 277
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            iconst_1
            iadd
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
         8: .line 280
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 16
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 16
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifne 16
         9: .line 281
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
        10: .line 283
            goto 16
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        11: pop
        12: .line 284
            new java.io.InterruptedIOException
            dup
            invokespecial java.io.InterruptedIOException.<init>:()V
            athrow
        13: .line 285
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
        14: .line 286
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            iconst_1
            isub
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
        15: .line 287
            aload 2
            athrow
        16: .line 286
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            iconst_1
            isub
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
        17: .line 271
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        18: goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: aload 1
            monitorexit
        20: athrow
        21: .line 290
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   22     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           7    10      11  Class java.lang.InterruptedException
           7    13      13  any
           3     5      19  any
           6    18      19  any
          19    20      19  any
    Exceptions:
      throws java.io.IOException

  public void awaitWritable(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // long l
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 294
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            if_acmpne 2
         1: .line 295
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.awaitCalledFromIoThread:()Ljava/io/IOException;
            athrow
         2: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 298
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 4
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifeq 6
         4: .line 299
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4
            monitorexit
         5: return
         6: .line 301
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 17
         7: .line 303
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            iconst_1
            iadd
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
         8: .line 304
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 16
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 16
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifne 16
         9: .line 305
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            aload 3 /* timeUnit */
            lload 1 /* l */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokevirtual java.lang.Object.wait:(J)V
        10: .line 307
            goto 16
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        11: pop
        12: .line 308
            new java.io.InterruptedIOException
            dup
            invokespecial java.io.InterruptedIOException.<init>:()V
            athrow
        13: .line 309
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        14: .line 310
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            iconst_1
            isub
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
        15: .line 311
            aload 5
            athrow
        16: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            iconst_1
            isub
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
        17: .line 297
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        18: goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: aload 4
            monitorexit
        20: athrow
        21: .line 314
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long l
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   22     0      this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0   22     1         l  J
            0   22     3  timeUnit  Ljava/util/concurrent/TimeUnit;
      Exception table:
        from    to  target  type
           7    10      11  Class java.lang.InterruptedException
           7    13      13  any
           3     5      19  any
           6    18      19  any
          19    20      19  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      l         
      timeUnit  

  public org.xnio.XnioExecutor getWriteThread();
    descriptor: ()Lorg/xnio/XnioExecutor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 318
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public org.xnio.ChannelListener$Setter<? extends S> getWriteSetter();
    descriptor: ()Lorg/xnio/ChannelListener$Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 323
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Signature: ()Lorg/xnio/ChannelListener$Setter<+TS;>;

  public org.xnio.ChannelListener$Setter<? extends S> getCloseSetter();
    descriptor: ()Lorg/xnio/ChannelListener$Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 328
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Signature: ()Lorg/xnio/ChannelListener$Setter<+TS;>;

  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.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 333
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.getWorker:()Lorg/xnio/XnioWorker;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  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.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 338
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public boolean flush();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 343
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 2
         1: .line 344
            iconst_1
            ireturn
         2: .line 346
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifeq 4
         3: .line 347
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         4: .line 350
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 6
         5: .line 351
            iconst_0
            ireturn
         6: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         7: .line 354
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.fullyFlushed:Z
            ifeq 11
         8: .line 355
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         9: .line 356
            aload 1
            monitorexit
        10: iconst_1
            ireturn
        11: .line 353
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 1
            monitorexit
        14: athrow
        15: .line 359
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_2
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 18
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
            ifne 18
        16: .line 360
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.queueFinalFrame:()V
        17: .line 361
            iconst_0
            ireturn
        18: .line 363
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_2
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 20
        19: .line 364
            iconst_0
            ireturn
        20: .line 366
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isFlushRequiredOnEmptyBuffer:()Z
            ifne 21
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnull 25
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            ifle 25
        21: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.handleBufferFull:()V
        22: .line 368
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 23
            iconst_0
            goto 24
      StackMap locals:
      StackMap stack:
        23: iconst_1
      StackMap locals:
      StackMap stack: int
        24: ireturn
        25: .line 370
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   26     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           7    10      13  any
          11    12      13  any
          13    14      13  any
    Exceptions:
      throws java.io.IOException

  protected boolean isFlushRequiredOnEmptyBuffer();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 374
            iconst_0
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public long write(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 379
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.safeToSend:()Z
            ifne 2
         1: .line 380
            lconst_0
            lreturn
         2: .line 382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 4
         3: .line 383
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.getBufferPool:()Lio/undertow/connector/ByteBufferPool;
            invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
         4: .line 385
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 4 /* buffer */
        start local 4 // java.nio.ByteBuffer buffer
         5: .line 386
            aload 4 /* buffer */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic org.xnio.Buffers.copy:(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;II)I
            istore 5 /* copied */
        start local 5 // int copied
         6: .line 387
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 8
         7: .line 388
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.handleBufferFull:()V
         8: .line 390
      StackMap locals: java.nio.ByteBuffer int
      StackMap stack:
            iload 5 /* copied */
            i2l
            lreturn
        end local 5 // int copied
        end local 4 // java.nio.ByteBuffer buffer
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    9     1    srcs  [Ljava/nio/ByteBuffer;
            0    9     2  offset  I
            0    9     3  length  I
            5    9     4  buffer  Ljava/nio/ByteBuffer;
            6    9     5  copied  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  public long write(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
         0: .line 395
            aload 0 /* this */
            aload 1 /* srcs */
            iconst_0
            aload 1 /* srcs */
            arraylength
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.write:([Ljava/nio/ByteBuffer;II)J
            lreturn
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  srcs  [Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      srcs  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer src
         0: .line 400
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.safeToSend:()Z
            ifne 2
         1: .line 401
            iconst_0
            ireturn
         2: .line 403
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 4
         3: .line 404
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.getBufferPool:()Lio/undertow/connector/ByteBufferPool;
            invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
         4: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 2 /* buffer */
        start local 2 // java.nio.ByteBuffer buffer
         5: .line 407
            aload 2 /* buffer */
            aload 1 /* src */
            invokestatic org.xnio.Buffers.copy:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
            istore 3 /* copied */
        start local 3 // int copied
         6: .line 408
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 8
         7: .line 409
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.handleBufferFull:()V
         8: .line 411
      StackMap locals: java.nio.ByteBuffer int
      StackMap stack:
            iload 3 /* copied */
            ireturn
        end local 3 // int copied
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    9     1     src  Ljava/nio/ByteBuffer;
            5    9     2  buffer  Ljava/nio/ByteBuffer;
            6    9     3  copied  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  public boolean send(io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/connector/PooledByteBuffer;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // io.undertow.connector.PooledByteBuffer pooled
         0: .line 423
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isWritesShutdown:()Z
            ifeq 2
         1: .line 424
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 426
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* pooled */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.sendInternal:(Lio/undertow/connector/PooledByteBuffer;)Z
            istore 2 /* result */
        start local 2 // boolean result
         3: .line 427
            iload 2 /* result */
            ifeq 5
         4: .line 428
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.flush:()Z
            pop
         5: .line 430
      StackMap locals: int
      StackMap stack:
            iload 2 /* result */
            ireturn
        end local 2 // boolean result
        end local 1 // io.undertow.connector.PooledByteBuffer pooled
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    6     1  pooled  Lio/undertow/connector/PooledByteBuffer;
            3    6     2  result  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      pooled  

  protected boolean sendInternal(io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/connector/PooledByteBuffer;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // io.undertow.connector.PooledByteBuffer pooled
         0: .line 434
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.safeToSend:()Z
            ifeq 3
         1: .line 435
            aload 0 /* this */
            aload 1 /* pooled */
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
         2: .line 436
            iconst_1
            ireturn
         3: .line 438
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // io.undertow.connector.PooledByteBuffer pooled
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    4     1  pooled  Lio/undertow/connector/PooledByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      pooled  

  protected boolean safeToSend();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 442
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            istore 1 /* state */
        start local 1 // int state
         1: .line 443
            iload 1 /* state */
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifne 2
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ifeq 3
         2: .line 444
      StackMap locals: int
      StackMap stack:
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         3: .line 446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifeq 5
         4: .line 447
            iconst_0
            ireturn
         5: .line 449
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 7
         6: .line 450
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.bodyIsSetAndNotReadyForFlush:()Ljava/lang/IllegalStateException;
            athrow
         7: .line 452
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // int state
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            1    8     1  state  I
    Exceptions:
      throws java.io.IOException

  public long writeFinal(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.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 457
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic org.xnio.channels.Channels.writeFinalBasic:(Lorg/xnio/channels/StreamSinkChannel;[Ljava/nio/ByteBuffer;II)J
            lreturn
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1    srcs  [Ljava/nio/ByteBuffer;
            0    1     2  offset  I
            0    1     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  public long writeFinal(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
         0: .line 462
            aload 0 /* this */
            aload 1 /* srcs */
            iconst_0
            aload 1 /* srcs */
            arraylength
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeFinal:([Ljava/nio/ByteBuffer;II)J
            lreturn
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  srcs  [Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      srcs  

  public int writeFinal(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.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer src
         0: .line 467
            aload 0 /* this */
            aload 1 /* src */
            invokestatic org.xnio.channels.Channels.writeFinalBasic:(Lorg/xnio/channels/StreamSinkChannel;Ljava/nio/ByteBuffer;)I
            ireturn
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1   src  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  private void handleBufferFull();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 471
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 472
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.bufferFull:Z
         2: .line 473
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ifne 7
         3: .line 474
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.sendWriteBuffer:()V
         4: .line 475
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
         5: .line 476
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_4
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         6: .line 477
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.queueFrame:(Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel;)V
         7: .line 471
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 480
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException

  private void sendWriteBuffer();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 483
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 2
         1: .line 484
            aload 0 /* this */
            getstatic io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.EMPTY_BYTE_BUFFER:Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
         2: .line 486
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         3: .line 487
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.sendInternal:(Lio/undertow/connector/PooledByteBuffer;)Z
            ifne 5
         4: .line 488
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.failedToSendAfterBeingSafe:()Ljava/lang/IllegalStateException;
            athrow
         5: .line 490
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
         6: .line 491
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Exceptions:
      throws java.io.IOException

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

  public boolean isReadyForFlush();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 503
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public boolean isWritesShutdown();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 510
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_2
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public boolean isOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 515
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.allAreClear:(II)Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 520
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.fullyFlushed:Z
            ifne 1
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 2
         1: .line 521
      StackMap locals:
      StackMap stack:
            return
         2: .line 524
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 525
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            ior
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
         4: .line 524
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnull 11
         9: .line 528
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        10: .line 529
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
        11: .line 531
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 14
        12: .line 532
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        13: .line 533
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        14: .line 535
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            ifnull 17
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            ifnull 17
        15: .line 536
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        16: .line 537
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
        17: .line 539
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channelForciblyClosed:()V
        18: .line 541
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isWriteResumed:()Z
            ifeq 20
        19: .line 542
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getWriteListener:()Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/util/concurrent/Executor;Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)V
        20: .line 544
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWrites:()V
        21: .line 545
            goto 25
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: astore 2
        23: .line 546
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWaiters:()V
        24: .line 547
            aload 2
            athrow
        25: .line 546
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWaiters:()V
        26: .line 548
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   27     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  any
           2    22      22  any
    Exceptions:
      throws java.io.IOException

  protected void channelForciblyClosed();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 561
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isFirstDataWritten:()Z
            ifeq 2
         1: .line 562
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            aconst_null
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedChannel.markWritesBroken:(Ljava/lang/Throwable;)V
         2: .line 564
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWaiters:()V
         3: .line 565
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Exceptions:
      throws java.io.IOException

  public boolean supportsOption(org.xnio.Option<?>);
    descriptor: (Lorg/xnio/Option;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // org.xnio.Option option
         0: .line 569
            iconst_0
            ireturn
        end local 1 // org.xnio.Option option
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  option  Lorg/xnio/Option<*>;
    Signature: (Lorg/xnio/Option<*>;)Z
    MethodParameters:
        Name  Flags
      option  

  public <T> T getOption(org.xnio.Option<T>);
    descriptor: (Lorg/xnio/Option;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // org.xnio.Option tOption
         0: .line 574
            aconst_null
            areturn
        end local 1 // org.xnio.Option tOption
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  tOption  Lorg/xnio/Option<TT;>;
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Lorg/xnio/Option<TT;>;)TT;
    MethodParameters:
         Name  Flags
      tOption  

  public <T> T setOption(org.xnio.Option<T>, );
    descriptor: (Lorg/xnio/Option;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // org.xnio.Option tOption
        start local 2 // java.lang.Object t
         0: .line 579
            aconst_null
            areturn
        end local 2 // java.lang.Object t
        end local 1 // org.xnio.Option tOption
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  tOption  Lorg/xnio/Option<TT;>;
            0    1     2        t  TT;
    Exceptions:
      throws java.lang.IllegalArgumentException, java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Lorg/xnio/Option<TT;>;TT;)TT;
    MethodParameters:
         Name  Flags
      tOption  
      t        

  public java.nio.ByteBuffer getBuffer();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 583
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 2
         1: .line 584
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
         2: .line 586
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 4
         3: .line 588
            aload 0 /* this */
            getstatic io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.EMPTY_BYTE_BUFFER:Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
         4: .line 590
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  final void flushComplete();
    descriptor: ()V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 597
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 599
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.bufferFull:Z
         2: .line 600
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getRemainingInBuffer:()I
            istore 2 /* remaining */
        start local 2 // int remaining
         3: .line 601
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
            istore 3 /* finalFrame */
        start local 3 // boolean finalFrame
         4: .line 602
            iload 3 /* finalFrame */
            ifeq 5
            iload 2 /* remaining */
            ifne 5
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.isAnotherFrameRequired:()Z
            ifne 5
            iconst_1
            goto 6
      StackMap locals: java.lang.Object int int
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: istore 4 /* channelClosed */
        start local 4 // boolean channelClosed
         7: .line 603
            iload 2 /* remaining */
            ifle 12
         8: .line 604
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.limit:()I
            iload 2 /* remaining */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         9: .line 605
            iload 3 /* finalFrame */
            ifeq 23
        10: .line 609
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
        11: .line 611
            goto 23
      StackMap locals: int
      StackMap stack:
        12: aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.isAnotherFrameRequired:()Z
            ifeq 19
        13: .line 612
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.finalFrameQueued:Z
        14: .line 613
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 23
        15: .line 614
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        16: .line 615
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        17: .line 616
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            bipush -9
            iand
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
        18: .line 618
            goto 23
      StackMap locals:
      StackMap stack:
        19: aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 23
        20: .line 619
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        21: .line 620
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        22: .line 621
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            bipush -9
            iand
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
        23: .line 623
      StackMap locals:
      StackMap stack:
            iload 4 /* channelClosed */
            ifeq 30
        24: .line 624
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.fullyFlushed:Z
        25: .line 625
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 35
        26: .line 626
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        27: .line 627
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        28: .line 628
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            bipush -9
            iand
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
        29: .line 630
            goto 35
      StackMap locals:
      StackMap stack:
        30: aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 35
        31: .line 637
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
            pop
        32: .line 638
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
        33: .line 639
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        34: .line 640
            aload 0 /* this */
            dup
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            bipush -9
            iand
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
        35: .line 643
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            ifnull 37
        36: .line 644
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        37: .line 646
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
        38: .line 648
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.readyForFlush:Z
        39: .line 649
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isWriteResumed:()Z
            ifeq 42
            iload 4 /* channelClosed */
            ifne 42
        40: .line 650
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWrites:()V
        41: .line 651
            goto 44
      StackMap locals:
      StackMap stack:
        42: aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isWriteResumed:()Z
            ifeq 44
        43: .line 654
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getWriteListener:()Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/util/concurrent/Executor;Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)V
        44: .line 657
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            invokevirtual org.xnio.ChannelListener$SimpleSetter.get:()Lorg/xnio/ChannelListener;
            astore 5 /* closeListener */
        start local 5 // org.xnio.ChannelListener closeListener
        45: .line 658
            iload 4 /* channelClosed */
            ifeq 47
            aload 5 /* closeListener */
            ifnull 47
        46: .line 659
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 5 /* closeListener */
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/util/concurrent/Executor;Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)V
        47: .line 661
      StackMap locals: org.xnio.ChannelListener
      StackMap stack:
            aload 0 /* this */
            iload 4 /* channelClosed */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.handleFlushComplete:(Z)V
        end local 5 // org.xnio.ChannelListener closeListener
        end local 4 // boolean channelClosed
        end local 3 // boolean finalFrame
        end local 2 // int remaining
        48: .line 662
            goto 52
      StackMap locals: io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel java.lang.Object
      StackMap stack: java.lang.Throwable
        49: astore 6
        50: .line 663
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWaiters:()V
        51: .line 664
            aload 6
            athrow
        52: .line 663
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWaiters:()V
        53: .line 597
            aload 1
            monitorexit
        54: goto 57
      StackMap locals:
      StackMap stack: java.lang.Throwable
        55: aload 1
            monitorexit
        56: athrow
        57: .line 666
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   58     0           this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            3   48     2      remaining  I
            4   48     3     finalFrame  Z
            7   48     4  channelClosed  Z
           45   48     5  closeListener  Lorg/xnio/ChannelListener<-TS;>;
      Exception table:
        from    to  target  type
           1    49      49  any
           1    54      55  any
          55    56      55  any
    Exceptions:
      throws java.io.IOException

  protected void handleFlushComplete(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
        start local 1 // boolean finalFrame
         0: .line 670
            return
        end local 1 // boolean finalFrame
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            0    1     1  finalFrame  Z
    MethodParameters:
            Name  Flags
      finalFrame  

  protected boolean isFirstDataWritten();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 673
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.state:I
            iconst_4
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public void markBroken();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 677
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
         1: .line 679
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWrites:()V
         2: .line 680
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.wakeupWaiters:()V
         3: .line 681
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.isWriteResumed:()Z
            ifeq 7
         4: .line 682
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            invokevirtual org.xnio.ChannelListener$SimpleSetter.get:()Lorg/xnio/ChannelListener;
            astore 1 /* writeListener */
        start local 1 // org.xnio.ChannelListener writeListener
         5: .line 683
            aload 1 /* writeListener */
            ifnull 7
         6: .line 684
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 1 /* writeListener */
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/util/concurrent/Executor;Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)V
        end local 1 // org.xnio.ChannelListener writeListener
         7: .line 687
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.closeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            invokevirtual org.xnio.ChannelListener$SimpleSetter.get:()Lorg/xnio/ChannelListener;
            astore 1 /* closeListener */
        start local 1 // org.xnio.ChannelListener closeListener
         8: .line 688
            aload 1 /* closeListener */
            ifnull 23
         9: .line 689
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            aload 1 /* closeListener */
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/util/concurrent/Executor;Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)V
        end local 1 // org.xnio.ChannelListener closeListener
        10: .line 691
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 2
        12: .line 692
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            ifnull 16
        13: .line 693
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            ifnull 16
        14: .line 694
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        15: .line 695
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
        16: .line 698
      StackMap locals: io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 19
        17: .line 699
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        18: .line 700
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        19: .line 702
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnull 22
        20: .line 703
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        21: .line 704
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
        22: .line 706
      StackMap locals:
      StackMap stack:
            aload 2
            athrow
        23: .line 692
      StackMap locals: io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            ifnull 27
        24: .line 693
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            ifnull 27
        25: .line 694
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
            invokevirtual io.undertow.server.protocol.framed.SendFrameHeader.getByteBuffer:()Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        26: .line 695
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.header:Lio/undertow/server/protocol/framed/SendFrameHeader;
        27: .line 698
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            ifnull 30
        28: .line 699
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        29: .line 700
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.body:Lio/undertow/connector/PooledByteBuffer;
        30: .line 702
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            ifnull 33
        31: .line 703
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        32: .line 704
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeBuffer:Lio/undertow/connector/PooledByteBuffer;
        33: .line 707
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   34     0           this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
            5    7     1  writeListener  Lorg/xnio/ChannelListener<-TS;>;
            8   10     1  closeListener  Lorg/xnio/ChannelListener<-TS;>;
      Exception table:
        from    to  target  type
           1    11      11  any

  org.xnio.ChannelListener<? super S> getWriteListener();
    descriptor: ()Lorg/xnio/ChannelListener;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 710
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.writeSetter:Lorg/xnio/ChannelListener$SimpleSetter;
            invokevirtual org.xnio.ChannelListener$SimpleSetter.get:()Lorg/xnio/ChannelListener;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Signature: ()Lorg/xnio/ChannelListener<-TS;>;

  private void wakeupWaiters();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 714
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            ifle 8
         1: .line 715
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         2: .line 718
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.waiterCount:I
            ifle 4
         3: .line 719
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         4: .line 715
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 723
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
      Exception table:
        from    to  target  type
           2     5       6  any
           6     7       6  any

  public C getChannel();
    descriptor: ()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 726
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.channel:Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            areturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
    Signature: ()TC;

  public boolean isBroken();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 730
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.broken:Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;

  public boolean isBufferFull();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
         0: .line 734
            aload 0 /* this */
            getfield io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel.bufferFull:Z
            ireturn
        end local 0 // io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;
}
Signature: <C:Lio/undertow/server/protocol/framed/AbstractFramedChannel<TC;TR;TS;>;R:Lio/undertow/server/protocol/framed/AbstractFramedStreamSourceChannel<TC;TR;TS;>;S:Lio/undertow/server/protocol/framed/AbstractFramedStreamSinkChannel<TC;TR;TS;>;>Ljava/lang/Object;Lorg/xnio/channels/StreamSinkChannel;
SourceFile: "AbstractFramedStreamSinkChannel.java"
NestMembers:
  io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel$1
InnerClasses:
  io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel$1
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  public SimpleSetter = org.xnio.ChannelListener$SimpleSetter of org.xnio.ChannelListener