public class io.undertow.conduits.AbstractFramedStreamSinkConduit extends org.xnio.conduits.AbstractStreamSinkConduit<org.xnio.conduits.StreamSinkConduit>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.conduits.AbstractFramedStreamSinkConduit
  super_class: org.xnio.conduits.AbstractStreamSinkConduit
{
  private final java.util.Deque<io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame> frameQueue;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<Lio/undertow/conduits/AbstractFramedStreamSinkConduit$Frame;>;

  private long queuedData;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private int bufferCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int state;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

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

  protected void <init>(org.xnio.conduits.StreamSinkConduit);
    descriptor: (Lorg/xnio/conduits/StreamSinkConduit;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // org.xnio.conduits.StreamSinkConduit next
         0: .line 72
            aload 0 /* this */
            aload 1 /* next */
            invokespecial org.xnio.conduits.AbstractStreamSinkConduit.<init>:(Lorg/xnio/conduits/StreamSinkConduit;)V
         1: .line 51
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
         2: .line 55
            aload 0 /* this */
            lconst_0
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
         3: .line 59
            aload 0 /* this */
            iconst_0
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
         4: .line 73
            return
        end local 1 // org.xnio.conduits.StreamSinkConduit next
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0    5     1  next  Lorg/xnio/conduits/StreamSinkConduit;
    MethodParameters:
      Name  Flags
      next  

  protected void queueFrame(io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack, java.nio.ByteBuffer[]);
    descriptor: (Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;[Ljava/nio/ByteBuffer;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack callback
        start local 2 // java.nio.ByteBuffer[] data
         0: .line 82
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            aload 2 /* data */
            invokestatic org.xnio.Buffers.remaining:([Ljava/nio/Buffer;)J
            ladd
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
         1: .line 83
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
            aload 2 /* data */
            arraylength
            iadd
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
         2: .line 84
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            new io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
            dup
            aload 1 /* callback */
            aload 2 /* data */
            iconst_0
            aload 2 /* data */
            arraylength
            invokespecial io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.<init>:(Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;[Ljava/nio/ByteBuffer;II)V
            invokeinterface java.util.Deque.add:(Ljava/lang/Object;)Z
            pop
         3: .line 85
            return
        end local 2 // java.nio.ByteBuffer[] data
        end local 1 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack callback
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0    4     1  callback  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
            0    4     2      data  [Ljava/nio/ByteBuffer;
    MethodParameters:
          Name  Flags
      callback  
      data      

  public long transferFrom(java.nio.channels.FileChannel, long, long);
    descriptor: (Ljava/nio/channels/FileChannel;JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // java.nio.channels.FileChannel src
        start local 2 // long position
        start local 4 // long count
         0: .line 88
            aload 1 /* src */
            lload 2 /* position */
            lload 4 /* count */
            new org.xnio.conduits.ConduitWritableByteChannel
            dup
            aload 0 /* this */
            invokespecial org.xnio.conduits.ConduitWritableByteChannel.<init>:(Lorg/xnio/conduits/StreamSinkConduit;)V
            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.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            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=7, locals=5, args_size=4
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // org.xnio.channels.StreamSourceChannel source
        start local 2 // long count
        start local 4 // java.nio.ByteBuffer throughBuffer
         0: .line 92
            aload 1 /* source */
            lload 2 /* count */
            aload 4 /* throughBuffer */
            new org.xnio.conduits.ConduitWritableByteChannel
            dup
            aload 0 /* this */
            invokespecial org.xnio.conduits.ConduitWritableByteChannel.<init>:(Lorg/xnio/conduits/StreamSinkConduit;)V
            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.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            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 int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // java.nio.ByteBuffer src
         0: .line 97
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 2
         1: .line 98
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.nio.ByteBuffer
            dup
            iconst_0
            aload 1 /* src */
            aastore
            iconst_0
            iconst_1
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.doWrite:([Ljava/nio/ByteBuffer;II)J
            l2i
            ireturn
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0    3     1   src  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  public long write(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.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offs
        start local 3 // int len
         0: .line 105
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 2
         1: .line 106
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            athrow
         2: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offs */
            iload 3 /* len */
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.doWrite:([Ljava/nio/ByteBuffer;II)J
            lreturn
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0    3     1  srcs  [Ljava/nio/ByteBuffer;
            0    3     2  offs  I
            0    3     3   len  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      srcs  
      offs  
      len   

  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.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // java.nio.ByteBuffer src
         0: .line 113
            aload 0 /* this */
            aload 1 /* src */
            invokestatic org.xnio.conduits.Conduits.writeFinalBasic:(Lorg/xnio/conduits/StreamSinkConduit;Ljava/nio/ByteBuffer;)I
            ireturn
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0    1     1   src  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  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.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offs
        start local 3 // int len
         0: .line 118
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offs */
            iload 3 /* len */
            invokestatic org.xnio.conduits.Conduits.writeFinalBasic:(Lorg/xnio/conduits/StreamSinkConduit;[Ljava/nio/ByteBuffer;II)J
            lreturn
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0    1     1  srcs  [Ljava/nio/ByteBuffer;
            0    1     2  offs  I
            0    1     3   len  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      srcs  
      offs  
      len   

  private long doWrite(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=12, args_size=4
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
        start local 1 // java.nio.ByteBuffer[] additionalData
        start local 2 // int offs
        start local 3 // int len
         0: .line 123
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
            aload 1 /* additionalData */
            ifnonnull 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack: int
         1: iload 3 /* len */
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int
      StackMap stack: int int
         2: iadd
            anewarray java.nio.ByteBuffer
            astore 4 /* buffers */
        start local 4 // java.nio.ByteBuffer[] buffers
         3: .line 124
            iconst_0
            istore 5 /* count */
        start local 5 // int count
         4: .line 125
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.iterator:()Ljava/util/Iterator;
            astore 7
            goto 11
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
            astore 6 /* frame */
        start local 6 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
         6: .line 126
            aload 6 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.offs:I
            istore 8 /* i */
        start local 8 // int i
         7: goto 10
         8: .line 127
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame java.util.Iterator int
      StackMap stack:
            aload 4 /* buffers */
            iload 5 /* count */
            iinc 5 /* count */ 1
            aload 6 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.data:[Ljava/nio/ByteBuffer;
            iload 8 /* i */
            aaload
            aastore
         9: .line 126
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 8 /* i */
            aload 6 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.offs:I
            aload 6 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.len:I
            iadd
            if_icmplt 8
        end local 8 // int i
        end local 6 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
        11: .line 125
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        12: .line 131
            aload 1 /* additionalData */
            ifnull 18
        13: .line 132
            iload 2 /* offs */
            istore 6 /* i */
        start local 6 // int i
        14: goto 17
        15: .line 133
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int int
      StackMap stack:
            aload 4 /* buffers */
            iload 5 /* count */
            iinc 5 /* count */ 1
            aload 1 /* additionalData */
            iload 6 /* i */
            aaload
            aastore
        16: .line 132
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 6 /* i */
            iload 2 /* offs */
            iload 3 /* len */
            iadd
            if_icmplt 15
        end local 6 // int i
        18: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.next:Lorg/xnio/conduits/Conduit;
            checkcast org.xnio.conduits.StreamSinkConduit
            aload 4 /* buffers */
            iconst_0
            aload 4 /* buffers */
            arraylength
            invokeinterface org.xnio.conduits.StreamSinkConduit.write:([Ljava/nio/ByteBuffer;II)J
            lstore 6 /* written */
        start local 6 // long written
        19: .line 138
            lload 6 /* written */
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            lcmp
            ifle 22
        20: .line 139
            aload 0 /* this */
            lconst_0
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
        21: .line 140
            goto 23
        22: .line 141
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            lload 6 /* written */
            lsub
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
        23: .line 143
      StackMap locals:
      StackMap stack:
            lload 6 /* written */
            lstore 8 /* toAllocate */
        start local 8 // long toAllocate
        24: .line 144
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
            astore 10 /* frame */
        start local 10 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
        25: .line 145
            goto 36
        26: .line 146
      StackMap locals: long io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
      StackMap stack:
            aload 10 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.remaining:J
            lload 8 /* toAllocate */
            lcmp
            ifle 29
        27: .line 147
            aload 10 /* frame */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.remaining:J
            lload 8 /* toAllocate */
            lsub
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.remaining:J
        28: .line 148
            lconst_0
            lreturn
        29: .line 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            pop
        30: .line 153
            aload 10 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.callback:Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
            astore 11 /* cb */
        start local 11 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack cb
        31: .line 154
            aload 11 /* cb */
            ifnull 33
        32: .line 155
            aload 11 /* cb */
            invokeinterface io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack.done:()V
        33: .line 157
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
            aload 10 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.len:I
            isub
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
        34: .line 158
            lload 8 /* toAllocate */
            aload 10 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.remaining:J
            lsub
            lstore 8 /* toAllocate */
        end local 11 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack cb
        35: .line 160
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.peek:()Ljava/lang/Object;
            checkcast io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
            astore 10 /* frame */
        36: .line 145
      StackMap locals:
      StackMap stack:
            aload 10 /* frame */
            ifnonnull 26
        37: .line 162
            lload 8 /* toAllocate */
        38: lreturn
        end local 10 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
        end local 8 // long toAllocate
        end local 6 // long written
        39: .line 164
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int
      StackMap stack: java.lang.Throwable
            astore 6 /* e */
        start local 6 // java.lang.Throwable e
        40: .line 165
            aload 6 /* e */
            instanceof java.io.IOException
            ifeq 41
            aload 6 /* e */
            checkcast java.io.IOException
            goto 42
      StackMap locals: java.lang.Throwable
      StackMap stack:
        41: new java.io.IOException
            dup
            aload 6 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack: java.io.IOException
        42: astore 7 /* ioe */
        start local 7 // java.io.IOException ioe
        43: .line 168
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.iterator:()Ljava/util/Iterator;
            astore 9
            goto 48
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int java.lang.Throwable java.io.IOException top java.util.Iterator
      StackMap stack:
        44: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
            astore 8 /* frame */
        start local 8 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
        45: .line 169
            aload 8 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.callback:Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
            astore 10 /* cb */
        start local 10 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack cb
        46: .line 170
            aload 10 /* cb */
            ifnull 48
        47: .line 171
            aload 10 /* cb */
            aload 7 /* ioe */
            invokeinterface io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack.failed:(Ljava/io/IOException;)V
        end local 10 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack cb
        end local 8 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
        48: .line 168
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 44
        49: .line 174
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.clear:()V
        50: .line 175
            aload 0 /* this */
            iconst_0
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.bufferCount:I
        51: .line 176
            aload 0 /* this */
            lconst_0
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
        52: .line 177
            goto 54
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit java.nio.ByteBuffer[] int int java.nio.ByteBuffer[] int java.lang.Throwable java.io.IOException
      StackMap stack: java.lang.Throwable
        53: pop
        54: .line 178
      StackMap locals:
      StackMap stack:
            aload 6 /* e */
            athrow
        end local 7 // java.io.IOException ioe
        end local 6 // java.lang.Throwable e
        end local 5 // int count
        end local 4 // java.nio.ByteBuffer[] buffers
        end local 3 // int len
        end local 2 // int offs
        end local 1 // java.nio.ByteBuffer[] additionalData
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   55     0            this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            0   55     1  additionalData  [Ljava/nio/ByteBuffer;
            0   55     2            offs  I
            0   55     3             len  I
            3   55     4         buffers  [Ljava/nio/ByteBuffer;
            4   55     5           count  I
            6   11     6           frame  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$Frame;
            7   11     8               i  I
           14   18     6               i  I
           19   39     6         written  J
           24   39     8      toAllocate  J
           25   39    10           frame  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$Frame;
           31   35    11              cb  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
           40   55     6               e  Ljava/lang/Throwable;
           43   55     7             ioe  Ljava/io/IOException;
           45   48     8           frame  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$Frame;
           46   48    10              cb  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
      Exception table:
        from    to  target  type
          18    28      39  Class java.io.IOException
          29    38      39  Class java.io.IOException
          18    28      39  Class java.lang.RuntimeException
          29    38      39  Class java.lang.RuntimeException
          18    28      39  Class java.lang.Error
          29    38      39  Class java.lang.Error
          43    53      53  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      additionalData  
      offs            
      len             

  protected long queuedDataLength();
    descriptor: ()J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 184
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            lreturn
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;

  public void terminateWrites();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 190
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 2
         1: .line 191
            return
         2: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.queueCloseFrames:()V
         3: .line 194
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_1
            ior
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
         4: .line 195
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            lconst_0
            lcmp
            ifne 8
         5: .line 196
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_2
            ior
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
         6: .line 197
            aload 0 /* this */
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.doTerminateWrites:()V
         7: .line 198
            aload 0 /* this */
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.finished:()V
         8: .line 200
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
    Exceptions:
      throws java.io.IOException

  protected void doTerminateWrites();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 203
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.next:Lorg/xnio/conduits/Conduit;
            checkcast org.xnio.conduits.StreamSinkConduit
            invokeinterface org.xnio.conduits.StreamSinkConduit.terminateWrites:()V
         1: .line 204
            return
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
    Exceptions:
      throws java.io.IOException

  protected boolean flushQueuedData();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 207
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            lconst_0
            lcmp
            ifle 2
         1: .line 208
            aload 0 /* this */
            aconst_null
            iconst_0
            iconst_0
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.doWrite:([Ljava/nio/ByteBuffer;II)J
            pop2
         2: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.queuedData:J
            lconst_0
            lcmp
            ifle 4
         3: .line 211
            iconst_0
            ireturn
         4: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ifeq 8
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_2
            invokestatic org.xnio.Bits.allAreClear:(II)Z
            ifeq 8
         5: .line 214
            aload 0 /* this */
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.doTerminateWrites:()V
         6: .line 215
            aload 0 /* this */
            dup
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_2
            ior
            putfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
         7: .line 216
            aload 0 /* this */
            invokevirtual io.undertow.conduits.AbstractFramedStreamSinkConduit.finished:()V
         8: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.next:Lorg/xnio/conduits/Conduit;
            checkcast org.xnio.conduits.StreamSinkConduit
            invokeinterface org.xnio.conduits.StreamSinkConduit.flush:()Z
            ireturn
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
    Exceptions:
      throws java.io.IOException

  public void truncateWrites();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 223
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.frameQueue:Ljava/util/Deque;
            invokeinterface java.util.Deque.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: io.undertow.conduits.AbstractFramedStreamSinkConduit top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame
            astore 1 /* frame */
        start local 1 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
         2: .line 224
            aload 1 /* frame */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame.callback:Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
            astore 3 /* cb */
        start local 3 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack cb
         3: .line 225
            aload 3 /* cb */
            ifnull 5
         4: .line 226
            aload 3 /* cb */
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.channelIsClosed:()Ljava/nio/channels/ClosedChannelException;
            invokeinterface io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack.failed:(Ljava/io/IOException;)V
        end local 3 // io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack cb
        end local 1 // io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame frame
         5: .line 223
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 229
            return
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
            2    5     1  frame  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$Frame;
            3    5     3     cb  Lio/undertow/conduits/AbstractFramedStreamSinkConduit$FrameCallBack;
    Exceptions:
      throws java.io.IOException

  protected boolean isWritesTerminated();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 232
            aload 0 /* this */
            getfield io.undertow.conduits.AbstractFramedStreamSinkConduit.state:I
            iconst_1
            invokestatic org.xnio.Bits.anyAreSet:(II)Z
            ireturn
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;

  protected void queueCloseFrames();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 237
            return
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;

  protected void finished();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
         0: .line 241
            return
        end local 0 // io.undertow.conduits.AbstractFramedStreamSinkConduit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/conduits/AbstractFramedStreamSinkConduit;
}
Signature: Lorg/xnio/conduits/AbstractStreamSinkConduit<Lorg/xnio/conduits/StreamSinkConduit;>;
SourceFile: "AbstractFramedStreamSinkConduit.java"
NestMembers:
  io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame  io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack  io.undertow.conduits.AbstractFramedStreamSinkConduit$PooledBufferFrameCallback  io.undertow.conduits.AbstractFramedStreamSinkConduit$PooledBuffersFrameCallback
InnerClasses:
  private Frame = io.undertow.conduits.AbstractFramedStreamSinkConduit$Frame of io.undertow.conduits.AbstractFramedStreamSinkConduit
  public abstract FrameCallBack = io.undertow.conduits.AbstractFramedStreamSinkConduit$FrameCallBack of io.undertow.conduits.AbstractFramedStreamSinkConduit
  protected PooledBufferFrameCallback = io.undertow.conduits.AbstractFramedStreamSinkConduit$PooledBufferFrameCallback of io.undertow.conduits.AbstractFramedStreamSinkConduit
  protected PooledBuffersFrameCallback = io.undertow.conduits.AbstractFramedStreamSinkConduit$PooledBuffersFrameCallback of io.undertow.conduits.AbstractFramedStreamSinkConduit