public class io.undertow.protocols.http2.Http2DataStreamSinkChannel extends io.undertow.protocols.http2.Http2StreamSinkChannel implements io.undertow.protocols.http2.Http2Stream
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.protocols.http2.Http2DataStreamSinkChannel
  super_class: io.undertow.protocols.http2.Http2StreamSinkChannel
{
  private final io.undertow.util.HeaderMap headers;
    descriptor: Lio/undertow/util/HeaderMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean first;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final io.undertow.protocols.http2.HpackEncoder encoder;
    descriptor: Lio/undertow/protocols/http2/HpackEncoder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile org.xnio.ChannelListener<io.undertow.protocols.http2.Http2DataStreamSinkChannel> completionListener;
    descriptor: Lorg/xnio/ChannelListener;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lorg/xnio/ChannelListener<Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;>;

  private final int frameType;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean completionListenerReady;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

  private io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer trailersProducer;
    descriptor: Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
    flags: (0x0002) ACC_PRIVATE

  void <init>(io.undertow.protocols.http2.Http2Channel, int, int);
    descriptor: (Lio/undertow/protocols/http2/Http2Channel;II)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // io.undertow.protocols.http2.Http2Channel channel
        start local 2 // int streamId
        start local 3 // int frameType
         0: .line 51
            aload 0 /* this */
            aload 1 /* channel */
            iload 2 /* streamId */
            new io.undertow.util.HeaderMap
            dup
            invokespecial io.undertow.util.HeaderMap.<init>:()V
            iload 3 /* frameType */
            invokespecial io.undertow.protocols.http2.Http2DataStreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;ILio/undertow/util/HeaderMap;I)V
         1: .line 52
            return
        end local 3 // int frameType
        end local 2 // int streamId
        end local 1 // io.undertow.protocols.http2.Http2Channel channel
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     1    channel  Lio/undertow/protocols/http2/Http2Channel;
            0    2     2   streamId  I
            0    2     3  frameType  I
    MethodParameters:
           Name  Flags
      channel    
      streamId   
      frameType  

  void <init>(io.undertow.protocols.http2.Http2Channel, int, io.undertow.util.HeaderMap, int);
    descriptor: (Lio/undertow/protocols/http2/Http2Channel;ILio/undertow/util/HeaderMap;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // io.undertow.protocols.http2.Http2Channel channel
        start local 2 // int streamId
        start local 3 // io.undertow.util.HeaderMap headers
        start local 4 // int frameType
         0: .line 55
            aload 0 /* this */
            aload 1 /* channel */
            iload 2 /* streamId */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.<init>:(Lio/undertow/protocols/http2/Http2Channel;I)V
         1: .line 41
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.first:Z
         2: .line 56
            aload 0 /* this */
            aload 1 /* channel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getEncoder:()Lio/undertow/protocols/http2/HpackEncoder;
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
         3: .line 57
            aload 0 /* this */
            aload 3 /* headers */
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.headers:Lio/undertow/util/HeaderMap;
         4: .line 58
            aload 0 /* this */
            iload 4 /* frameType */
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.frameType:I
         5: .line 59
            return
        end local 4 // int frameType
        end local 3 // io.undertow.util.HeaderMap headers
        end local 2 // int streamId
        end local 1 // io.undertow.protocols.http2.Http2Channel channel
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    6     1    channel  Lio/undertow/protocols/http2/Http2Channel;
            0    6     2   streamId  I
            0    6     3    headers  Lio/undertow/util/HeaderMap;
            0    6     4  frameType  I
    MethodParameters:
           Name  Flags
      channel    
      streamId   
      headers    
      frameType  

  public io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer getTrailersProducer();
    descriptor: ()Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 62
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.trailersProducer:Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;

  public void setTrailersProducer(io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer);
    descriptor: (Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer trailersProducer
         0: .line 66
            aload 0 /* this */
            aload 1 /* trailersProducer */
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.trailersProducer:Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
         1: .line 67
            return
        end local 1 // io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer trailersProducer
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     1  trailersProducer  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
    MethodParameters:
                  Name  Flags
      trailersProducer  

  protected io.undertow.server.protocol.framed.SendFrameHeader createFrameHeaderImpl();
    descriptor: ()Lio/undertow/server/protocol/framed/SendFrameHeader;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=21, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 72
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            checkcast io.undertow.protocols.http2.Http2Channel
            invokevirtual io.undertow.protocols.http2.Http2Channel.getPaddingBytes:()I
            istore 1 /* dataPaddingBytes */
        start local 1 // int dataPaddingBytes
         1: .line 73
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 1 /* dataPaddingBytes */
            iadd
            iload 1 /* dataPaddingBytes */
            ifle 2
            iconst_1
            goto 3
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int
      StackMap stack: int
         2: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int
      StackMap stack: int int
         3: iadd
            istore 2 /* attempted */
        start local 2 // int attempted
         4: .line 74
            aload 0 /* this */
            iload 2 /* attempted */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.grabFlowControlBytes:(I)I
            istore 3 /* fcWindow */
        start local 3 // int fcWindow
         5: .line 75
            iload 3 /* fcWindow */
            ifne 7
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 7
         6: .line 77
            new io.undertow.server.protocol.framed.SendFrameHeader
            dup
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            aconst_null
            invokespecial io.undertow.server.protocol.framed.SendFrameHeader.<init>:(ILio/undertow/connector/PooledByteBuffer;)V
            areturn
         7: .line 79
      StackMap locals: int int
      StackMap stack:
            iload 3 /* fcWindow */
            iload 1 /* dataPaddingBytes */
            iconst_1
            iadd
            if_icmpgt 15
         8: .line 81
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 3 /* fcWindow */
            if_icmplt 11
         9: .line 83
            iconst_0
            istore 1 /* dataPaddingBytes */
        10: .line 84
            goto 15
      StackMap locals:
      StackMap stack:
        11: aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 1 /* dataPaddingBytes */
            if_icmpne 14
        12: .line 86
            iconst_1
            istore 1 /* dataPaddingBytes */
        13: .line 87
            goto 15
        14: .line 88
      StackMap locals:
      StackMap stack:
            iload 3 /* fcWindow */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            isub
            iconst_1
            isub
            istore 1 /* dataPaddingBytes */
        15: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.isFinalFrameQueued:()Z
            ifeq 18
            iload 3 /* fcWindow */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 1 /* dataPaddingBytes */
            ifle 16
            iload 1 /* dataPaddingBytes */
            iconst_1
            iadd
            goto 17
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int
      StackMap stack: int int
        16: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int
      StackMap stack: int int int
        17: iadd
            if_icmplt 18
            iconst_1
            goto 19
      StackMap locals:
      StackMap stack:
        18: iconst_0
      StackMap locals:
      StackMap stack: int
        19: istore 4 /* finalFrame */
        start local 4 // boolean finalFrame
        20: .line 93
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            checkcast io.undertow.protocols.http2.Http2Channel
            invokevirtual io.undertow.protocols.http2.Http2Channel.getBufferPool:()Lio/undertow/connector/ByteBufferPool;
            invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
            astore 5 /* firstHeaderBuffer */
        start local 5 // io.undertow.connector.PooledByteBuffer firstHeaderBuffer
        21: .line 94
            aconst_null
            astore 6 /* allHeaderBuffers */
        start local 6 // io.undertow.connector.PooledByteBuffer[] allHeaderBuffers
        22: .line 95
            aload 5 /* firstHeaderBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 7 /* firstBuffer */
        start local 7 // java.nio.ByteBuffer firstBuffer
        23: .line 96
            iconst_0
            istore 8 /* firstFrame */
        start local 8 // boolean firstFrame
        24: .line 98
            aconst_null
            astore 9 /* trailers */
        start local 9 // io.undertow.util.HeaderMap trailers
        25: .line 99
            iload 4 /* finalFrame */
            ifeq 29
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.trailersProducer:Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
            ifnull 29
        26: .line 100
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.trailersProducer:Lio/undertow/protocols/http2/Http2DataStreamSinkChannel$TrailersProducer;
            invokeinterface io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer.getTrailers:()Lio/undertow/util/HeaderMap;
            astore 9 /* trailers */
        27: .line 101
            aload 9 /* trailers */
            ifnull 29
            aload 9 /* trailers */
            invokevirtual io.undertow.util.HeaderMap.size:()I
            ifne 29
        28: .line 102
            aconst_null
            astore 9 /* trailers */
        29: .line 106
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.first:Z
            ifeq 71
        30: .line 107
            iconst_1
            istore 8 /* firstFrame */
        31: .line 108
            aload 0 /* this */
            iconst_0
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.first:Z
        32: .line 110
            aload 7 /* firstBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        33: .line 111
            aload 7 /* firstBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        34: .line 112
            aload 7 /* firstBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        35: .line 113
            aload 7 /* firstBuffer */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.frameType:I
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        36: .line 114
            aload 7 /* firstBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        37: .line 116
            aload 7 /* firstBuffer */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getStreamId:()I
            invokestatic io.undertow.protocols.http2.Http2ProtocolUtils.putInt:(Ljava/nio/ByteBuffer;I)V
        38: .line 118
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            checkcast io.undertow.protocols.http2.Http2Channel
            invokevirtual io.undertow.protocols.http2.Http2Channel.getPaddingBytes:()I
            istore 10 /* paddingBytes */
        start local 10 // int paddingBytes
        39: .line 119
            iload 10 /* paddingBytes */
            ifle 41
        40: .line 120
            aload 7 /* firstBuffer */
            iload 10 /* paddingBytes */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        41: .line 122
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 7 /* firstBuffer */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.writeBeforeHeaderBlock:(Ljava/nio/ByteBuffer;)V
        42: .line 123
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.headers:Lio/undertow/util/HeaderMap;
            astore 11 /* headers */
        start local 11 // io.undertow.util.HeaderMap headers
        43: .line 124
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
            aload 11 /* headers */
            aload 7 /* firstBuffer */
            invokevirtual io.undertow.protocols.http2.HpackEncoder.encode:(Lio/undertow/util/HeaderMap;Ljava/nio/ByteBuffer;)Lio/undertow/protocols/http2/HpackEncoder$State;
            astore 12 /* result */
        start local 12 // io.undertow.protocols.http2.HpackEncoder$State result
        44: .line 125
            aload 5 /* firstHeaderBuffer */
            astore 13 /* current */
        start local 13 // io.undertow.connector.PooledByteBuffer current
        45: .line 126
            aload 7 /* firstBuffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            bipush 9
            isub
            iload 10 /* paddingBytes */
            iadd
            istore 14 /* headerFrameLength */
        start local 14 // int headerFrameLength
        46: .line 127
            aload 7 /* firstBuffer */
            iconst_0
            iload 14 /* headerFrameLength */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        47: .line 128
            aload 7 /* firstBuffer */
            iconst_1
            iload 14 /* headerFrameLength */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        48: .line 129
            aload 7 /* firstBuffer */
            iconst_2
            iload 14 /* headerFrameLength */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        49: .line 130
            aload 7 /* firstBuffer */
            iconst_4
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.isFinalFrameQueued:()Z
            ifeq 50
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 50
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.frameType:I
            iconst_1
            if_icmpne 50
            aload 9 /* trailers */
            ifnonnull 50
            iconst_1
            goto 51
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap int io.undertow.util.HeaderMap io.undertow.protocols.http2.HpackEncoder$State io.undertow.connector.PooledByteBuffer int
      StackMap stack: java.nio.ByteBuffer int
        50: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap int io.undertow.util.HeaderMap io.undertow.protocols.http2.HpackEncoder$State io.undertow.connector.PooledByteBuffer int
      StackMap stack: java.nio.ByteBuffer int int
        51: aload 12 /* result */
            getstatic io.undertow.protocols.http2.HpackEncoder$State.COMPLETE:Lio/undertow/protocols/http2/HpackEncoder$State;
            if_acmpne 52
            iconst_4
            goto 53
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap int io.undertow.util.HeaderMap io.undertow.protocols.http2.HpackEncoder$State io.undertow.connector.PooledByteBuffer int
      StackMap stack: java.nio.ByteBuffer int int
        52: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap int io.undertow.util.HeaderMap io.undertow.protocols.http2.HpackEncoder$State io.undertow.connector.PooledByteBuffer int
      StackMap stack: java.nio.ByteBuffer int int int
        53: ior
            iload 10 /* paddingBytes */
            ifle 54
            bipush 8
            goto 55
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap int io.undertow.util.HeaderMap io.undertow.protocols.http2.HpackEncoder$State io.undertow.connector.PooledByteBuffer int
      StackMap stack: java.nio.ByteBuffer int int
        54: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap int io.undertow.util.HeaderMap io.undertow.protocols.http2.HpackEncoder$State io.undertow.connector.PooledByteBuffer int
      StackMap stack: java.nio.ByteBuffer int int int
        55: ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        56: .line 131
            aload 7 /* firstBuffer */
            astore 15 /* currentBuffer */
        start local 15 // java.nio.ByteBuffer currentBuffer
        57: .line 133
            aload 15 /* currentBuffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 10 /* paddingBytes */
            if_icmpge 61
        58: .line 134
            aload 0 /* this */
            aload 6 /* allHeaderBuffers */
            aload 13 /* current */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.allocateAll:([Lio/undertow/connector/PooledByteBuffer;Lio/undertow/connector/PooledByteBuffer;)[Lio/undertow/connector/PooledByteBuffer;
            astore 6 /* allHeaderBuffers */
        59: .line 135
            aload 6 /* allHeaderBuffers */
            aload 6 /* allHeaderBuffers */
            arraylength
            iconst_1
            isub
            aaload
            astore 13 /* current */
        60: .line 136
            aload 13 /* current */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 15 /* currentBuffer */
        61: .line 138
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            iconst_0
            istore 16 /* i */
        start local 16 // int i
        62: goto 65
        63: .line 139
      StackMap locals: int
      StackMap stack:
            aload 15 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        64: .line 138
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        65: iload 16 /* i */
            iload 10 /* paddingBytes */
            if_icmplt 63
        end local 16 // int i
        66: .line 142
            goto 70
        67: .line 145
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* allHeaderBuffers */
            aload 13 /* current */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.allocateAll:([Lio/undertow/connector/PooledByteBuffer;Lio/undertow/connector/PooledByteBuffer;)[Lio/undertow/connector/PooledByteBuffer;
            astore 6 /* allHeaderBuffers */
        68: .line 146
            aload 6 /* allHeaderBuffers */
            aload 6 /* allHeaderBuffers */
            arraylength
            iconst_1
            isub
            aaload
            astore 13 /* current */
        69: .line 147
            aload 0 /* this */
            aload 11 /* headers */
            aload 13 /* current */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.encodeContinuationFrame:(Lio/undertow/util/HeaderMap;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/http2/HpackEncoder$State;
            astore 12 /* result */
        70: .line 142
      StackMap locals:
      StackMap stack:
            aload 12 /* result */
            getstatic io.undertow.protocols.http2.HpackEncoder$State.COMPLETE:Lio/undertow/protocols/http2/HpackEncoder$State;
            if_acmpne 67
        end local 15 // java.nio.ByteBuffer currentBuffer
        end local 14 // int headerFrameLength
        end local 13 // io.undertow.connector.PooledByteBuffer current
        end local 12 // io.undertow.protocols.http2.HpackEncoder$State result
        end local 11 // io.undertow.util.HeaderMap headers
        end local 10 // int paddingBytes
        71: .line 152
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap
      StackMap stack:
            aload 6 /* allHeaderBuffers */
            ifnonnull 72
            aload 5 /* firstHeaderBuffer */
            goto 73
      StackMap locals:
      StackMap stack:
        72: aload 6 /* allHeaderBuffers */
            aload 6 /* allHeaderBuffers */
            arraylength
            iconst_1
            isub
            aaload
      StackMap locals:
      StackMap stack: io.undertow.connector.PooledByteBuffer
        73: astore 10 /* currentPooled */
        start local 10 // io.undertow.connector.PooledByteBuffer currentPooled
        74: .line 153
            aload 10 /* currentPooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 11 /* currentBuffer */
        start local 11 // java.nio.ByteBuffer currentBuffer
        75: .line 154
            aconst_null
            astore 12 /* trailer */
        start local 12 // java.nio.ByteBuffer trailer
        76: .line 155
            iconst_0
            istore 13 /* remainingInBuffer */
        start local 13 // int remainingInBuffer
        77: .line 156
            iconst_0
            istore 14 /* requiresTrailers */
        start local 14 // boolean requiresTrailers
        78: .line 158
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 114
        79: .line 159
            iload 3 /* fcWindow */
            ifle 112
        80: .line 161
            aload 11 /* currentBuffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            bipush 10
            if_icmpge 86
        81: .line 162
            aload 0 /* this */
            aload 6 /* allHeaderBuffers */
            aload 10 /* currentPooled */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.allocateAll:([Lio/undertow/connector/PooledByteBuffer;Lio/undertow/connector/PooledByteBuffer;)[Lio/undertow/connector/PooledByteBuffer;
            astore 6 /* allHeaderBuffers */
        82: .line 163
            aload 6 /* allHeaderBuffers */
            ifnonnull 83
            aload 5 /* firstHeaderBuffer */
            goto 84
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int
      StackMap stack:
        83: aload 6 /* allHeaderBuffers */
            aload 6 /* allHeaderBuffers */
            arraylength
            iconst_1
            isub
            aaload
      StackMap locals:
      StackMap stack: io.undertow.connector.PooledByteBuffer
        84: astore 10 /* currentPooled */
        85: .line 164
            aload 10 /* currentPooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 11 /* currentBuffer */
        86: .line 166
      StackMap locals:
      StackMap stack:
            iload 3 /* fcWindow */
            iload 1 /* dataPaddingBytes */
            isub
            iload 1 /* dataPaddingBytes */
            ifle 87
            iconst_1
            goto 88
      StackMap locals:
      StackMap stack: int
        87: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int
      StackMap stack: int int
        88: isub
            istore 15 /* toSend */
        start local 15 // int toSend
        89: .line 167
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 15 /* toSend */
            isub
            istore 13 /* remainingInBuffer */
        90: .line 169
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 15 /* toSend */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        91: .line 171
            aload 11 /* currentBuffer */
            iload 3 /* fcWindow */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        92: .line 172
            aload 11 /* currentBuffer */
            iload 3 /* fcWindow */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        93: .line 173
            aload 11 /* currentBuffer */
            iload 3 /* fcWindow */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        94: .line 174
            aload 11 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
        95: .line 175
            aload 9 /* trailers */
            ifnonnull 102
        96: .line 176
            aload 11 /* currentBuffer */
            iload 4 /* finalFrame */
            ifeq 97
            iconst_1
            goto 98
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int
      StackMap stack: java.nio.ByteBuffer
        97: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int
      StackMap stack: java.nio.ByteBuffer int
        98: iload 1 /* dataPaddingBytes */
            ifle 99
            bipush 8
            goto 100
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int
      StackMap stack: java.nio.ByteBuffer int
        99: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int
      StackMap stack: java.nio.ByteBuffer int int
       100: ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       101: .line 177
            goto 107
       102: .line 178
      StackMap locals:
      StackMap stack:
            iload 4 /* finalFrame */
            ifeq 104
       103: .line 179
            iconst_1
            istore 14 /* requiresTrailers */
       104: .line 181
      StackMap locals:
      StackMap stack:
            aload 11 /* currentBuffer */
            iload 1 /* dataPaddingBytes */
            ifle 105
            bipush 8
            goto 106
      StackMap locals:
      StackMap stack: java.nio.ByteBuffer
       105: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int
      StackMap stack: java.nio.ByteBuffer int
       106: i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       107: .line 183
      StackMap locals:
      StackMap stack:
            aload 11 /* currentBuffer */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getStreamId:()I
            invokestatic io.undertow.protocols.http2.Http2ProtocolUtils.putInt:(Ljava/nio/ByteBuffer;I)V
       108: .line 184
            iload 1 /* dataPaddingBytes */
            ifle 135
       109: .line 185
            aload 11 /* currentBuffer */
            iload 1 /* dataPaddingBytes */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       110: .line 186
            iload 1 /* dataPaddingBytes */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 12 /* trailer */
        end local 15 // int toSend
       111: .line 188
            goto 135
       112: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 13 /* remainingInBuffer */
       113: .line 191
            goto 135
      StackMap locals:
      StackMap stack:
       114: iload 4 /* finalFrame */
            ifeq 133
            iload 8 /* firstFrame */
            ifne 133
       115: .line 192
            aload 11 /* currentBuffer */
            iload 3 /* fcWindow */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       116: .line 193
            aload 11 /* currentBuffer */
            iload 3 /* fcWindow */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       117: .line 194
            aload 11 /* currentBuffer */
            iload 3 /* fcWindow */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       118: .line 195
            aload 11 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       119: .line 196
            aload 9 /* trailers */
            ifnonnull 124
       120: .line 197
            aload 11 /* currentBuffer */
            iconst_1
            iload 1 /* dataPaddingBytes */
            ifle 121
            bipush 8
            goto 122
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int
      StackMap stack: java.nio.ByteBuffer int
       121: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int
      StackMap stack: java.nio.ByteBuffer int int
       122: ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       123: .line 198
            goto 128
       124: .line 199
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* requiresTrailers */
       125: .line 200
            aload 11 /* currentBuffer */
            iload 1 /* dataPaddingBytes */
            ifle 126
            bipush 8
            goto 127
      StackMap locals:
      StackMap stack: java.nio.ByteBuffer
       126: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int
      StackMap stack: java.nio.ByteBuffer int
       127: i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       128: .line 202
      StackMap locals:
      StackMap stack:
            aload 11 /* currentBuffer */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getStreamId:()I
            invokestatic io.undertow.protocols.http2.Http2ProtocolUtils.putInt:(Ljava/nio/ByteBuffer;I)V
       129: .line 203
            iload 1 /* dataPaddingBytes */
            ifle 135
       130: .line 204
            aload 11 /* currentBuffer */
            iload 1 /* dataPaddingBytes */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       131: .line 205
            iload 1 /* dataPaddingBytes */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 12 /* trailer */
       132: .line 207
            goto 135
      StackMap locals:
      StackMap stack:
       133: iload 4 /* finalFrame */
            ifeq 135
            aload 9 /* trailers */
            ifnull 135
       134: .line 208
            iconst_1
            istore 14 /* requiresTrailers */
       135: .line 211
      StackMap locals:
      StackMap stack:
            iload 14 /* requiresTrailers */
            ifeq 158
       136: .line 212
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getChannel:()Lio/undertow/server/protocol/framed/AbstractFramedChannel;
            checkcast io.undertow.protocols.http2.Http2Channel
            invokevirtual io.undertow.protocols.http2.Http2Channel.getBufferPool:()Lio/undertow/connector/ByteBufferPool;
            invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
            astore 15 /* firstTrailerBuffer */
        start local 15 // io.undertow.connector.PooledByteBuffer firstTrailerBuffer
       137: .line 213
            aload 12 /* trailer */
            ifnull 139
       138: .line 214
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            aload 12 /* trailer */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
       139: .line 216
      StackMap locals: io.undertow.connector.PooledByteBuffer
      StackMap stack:
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       140: .line 217
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       141: .line 218
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       142: .line 219
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_1
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       143: .line 220
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_5
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
       144: .line 222
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getStreamId:()I
            invokestatic io.undertow.protocols.http2.Http2ProtocolUtils.putInt:(Ljava/nio/ByteBuffer;I)V
       145: .line 223
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
            aload 9 /* trailers */
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual io.undertow.protocols.http2.HpackEncoder.encode:(Lio/undertow/util/HeaderMap;Ljava/nio/ByteBuffer;)Lio/undertow/protocols/http2/HpackEncoder$State;
            astore 16 /* result */
        start local 16 // io.undertow.protocols.http2.HpackEncoder$State result
       146: .line 224
            aload 16 /* result */
            getstatic io.undertow.protocols.http2.HpackEncoder$State.COMPLETE:Lio/undertow/protocols/http2/HpackEncoder$State;
            if_acmpeq 148
       147: .line 225
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.http2TrailerToLargeForSingleBuffer:()Ljava/lang/RuntimeException;
            athrow
       148: .line 227
      StackMap locals: io.undertow.protocols.http2.HpackEncoder$State
      StackMap stack:
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            bipush 9
            isub
            istore 17 /* headerFrameLength */
        start local 17 // int headerFrameLength
       149: .line 228
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_0
            iload 17 /* headerFrameLength */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
       150: .line 229
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_1
            iload 17 /* headerFrameLength */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
       151: .line 230
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            iconst_2
            iload 17 /* headerFrameLength */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
       152: .line 231
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
       153: .line 232
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 18 /* size */
        start local 18 // int size
       154: .line 233
            iload 18 /* size */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 12 /* trailer */
       155: .line 234
            aload 12 /* trailer */
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
       156: .line 235
            aload 12 /* trailer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
       157: .line 236
            aload 15 /* firstTrailerBuffer */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        end local 18 // int size
        end local 17 // int headerFrameLength
        end local 16 // io.undertow.protocols.http2.HpackEncoder$State result
        end local 15 // io.undertow.connector.PooledByteBuffer firstTrailerBuffer
       158: .line 238
      StackMap locals:
      StackMap stack:
            aload 6 /* allHeaderBuffers */
            ifnonnull 161
       159: .line 240
            aload 11 /* currentBuffer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
       160: .line 241
            new io.undertow.server.protocol.framed.SendFrameHeader
            dup
            iload 13 /* remainingInBuffer */
            aload 10 /* currentPooled */
            iconst_0
            aload 12 /* trailer */
            invokespecial io.undertow.server.protocol.framed.SendFrameHeader.<init>:(ILio/undertow/connector/PooledByteBuffer;ZLjava/nio/ByteBuffer;)V
            areturn
       161: .line 245
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 15 /* length */
        start local 15 // int length
       162: .line 246
            iconst_0
            istore 16 /* i */
        start local 16 // int i
       163: goto 167
       164: .line 247
      StackMap locals: int int
      StackMap stack:
            iload 15 /* length */
            aload 6 /* allHeaderBuffers */
            iload 16 /* i */
            aaload
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.position:()I
            iadd
            istore 15 /* length */
       165: .line 248
            aload 6 /* allHeaderBuffers */
            iload 16 /* i */
            aaload
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
       166: .line 246
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
       167: iload 16 /* i */
            aload 6 /* allHeaderBuffers */
            arraylength
            if_icmplt 164
        end local 16 // int i
       168: .line 251
            iload 15 /* length */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 16 /* newBuf */
        start local 16 // java.nio.ByteBuffer newBuf
       169: .line 253
            iconst_0
            istore 17 /* i */
        start local 17 // int i
       170: goto 173
       171: .line 254
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int java.nio.ByteBuffer int
      StackMap stack:
            aload 16 /* newBuf */
            aload 6 /* allHeaderBuffers */
            iload 17 /* i */
            aaload
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
       172: .line 253
            iinc 17 /* i */ 1
      StackMap locals:
      StackMap stack:
       173: iload 17 /* i */
            aload 6 /* allHeaderBuffers */
            arraylength
            if_icmplt 171
        end local 17 // int i
       174: .line 256
            aload 16 /* newBuf */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
       175: .line 257
            new io.undertow.server.protocol.framed.SendFrameHeader
            dup
            iload 13 /* remainingInBuffer */
            new io.undertow.util.ImmediatePooledByteBuffer
            dup
            aload 16 /* newBuf */
            invokespecial io.undertow.util.ImmediatePooledByteBuffer.<init>:(Ljava/nio/ByteBuffer;)V
            iconst_0
            aload 12 /* trailer */
            invokespecial io.undertow.server.protocol.framed.SendFrameHeader.<init>:(ILio/undertow/connector/PooledByteBuffer;ZLjava/nio/ByteBuffer;)V
            astore 19
       176: .line 260
            iconst_0
            istore 20 /* i */
        start local 20 // int i
       177: goto 180
       178: .line 261
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int java.nio.ByteBuffer top top io.undertow.server.protocol.framed.SendFrameHeader int
      StackMap stack:
            aload 6 /* allHeaderBuffers */
            iload 20 /* i */
            aaload
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       179: .line 260
            iinc 20 /* i */ 1
      StackMap locals:
      StackMap stack:
       180: iload 20 /* i */
            aload 6 /* allHeaderBuffers */
            arraylength
            if_icmplt 178
        end local 20 // int i
       181: .line 257
            aload 19
            areturn
        end local 16 // java.nio.ByteBuffer newBuf
       182: .line 258
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int
      StackMap stack: java.lang.Throwable
            astore 18
       183: .line 260
            iconst_0
            istore 20 /* i */
        start local 20 // int i
       184: goto 187
       185: .line 261
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel int int int int io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer[] java.nio.ByteBuffer int io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer java.nio.ByteBuffer int int int top top java.lang.Throwable top int
      StackMap stack:
            aload 6 /* allHeaderBuffers */
            iload 20 /* i */
            aaload
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       186: .line 260
            iinc 20 /* i */ 1
      StackMap locals:
      StackMap stack:
       187: iload 20 /* i */
            aload 6 /* allHeaderBuffers */
            arraylength
            if_icmplt 185
        end local 20 // int i
       188: .line 263
            aload 18
            athrow
        end local 15 // int length
        end local 14 // boolean requiresTrailers
        end local 13 // int remainingInBuffer
        end local 12 // java.nio.ByteBuffer trailer
        end local 11 // java.nio.ByteBuffer currentBuffer
        end local 10 // io.undertow.connector.PooledByteBuffer currentPooled
        end local 9 // io.undertow.util.HeaderMap trailers
        end local 8 // boolean firstFrame
        end local 7 // java.nio.ByteBuffer firstBuffer
        end local 6 // io.undertow.connector.PooledByteBuffer[] allHeaderBuffers
        end local 5 // io.undertow.connector.PooledByteBuffer firstHeaderBuffer
        end local 4 // boolean finalFrame
        end local 3 // int fcWindow
        end local 2 // int attempted
        end local 1 // int dataPaddingBytes
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0  189     0                this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            1  189     1    dataPaddingBytes  I
            4  189     2           attempted  I
            5  189     3            fcWindow  I
           20  189     4          finalFrame  Z
           21  189     5   firstHeaderBuffer  Lio/undertow/connector/PooledByteBuffer;
           22  189     6    allHeaderBuffers  [Lio/undertow/connector/PooledByteBuffer;
           23  189     7         firstBuffer  Ljava/nio/ByteBuffer;
           24  189     8          firstFrame  Z
           25  189     9            trailers  Lio/undertow/util/HeaderMap;
           39   71    10        paddingBytes  I
           43   71    11             headers  Lio/undertow/util/HeaderMap;
           44   71    12              result  Lio/undertow/protocols/http2/HpackEncoder$State;
           45   71    13             current  Lio/undertow/connector/PooledByteBuffer;
           46   71    14   headerFrameLength  I
           57   71    15       currentBuffer  Ljava/nio/ByteBuffer;
           62   66    16                   i  I
           74  189    10       currentPooled  Lio/undertow/connector/PooledByteBuffer;
           75  189    11       currentBuffer  Ljava/nio/ByteBuffer;
           76  189    12             trailer  Ljava/nio/ByteBuffer;
           77  189    13   remainingInBuffer  I
           78  189    14    requiresTrailers  Z
           89  111    15              toSend  I
          137  158    15  firstTrailerBuffer  Lio/undertow/connector/PooledByteBuffer;
          146  158    16              result  Lio/undertow/protocols/http2/HpackEncoder$State;
          149  158    17   headerFrameLength  I
          154  158    18                size  I
          162  189    15              length  I
          163  168    16                   i  I
          169  182    16              newBuf  Ljava/nio/ByteBuffer;
          170  174    17                   i  I
          177  181    20                   i  I
          184  188    20                   i  I
      Exception table:
        from    to  target  type
         168   176     182  any

  private io.undertow.protocols.http2.HpackEncoder$State encodeContinuationFrame(io.undertow.util.HeaderMap, io.undertow.connector.PooledByteBuffer);
    descriptor: (Lio/undertow/util/HeaderMap;Lio/undertow/connector/PooledByteBuffer;)Lio/undertow/protocols/http2/HpackEncoder$State;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // io.undertow.util.HeaderMap headers
        start local 2 // io.undertow.connector.PooledByteBuffer current
         0: .line 274
            aload 2 /* current */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 3 /* currentBuffer */
        start local 3 // java.nio.ByteBuffer currentBuffer
         1: .line 275
            aload 3 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         2: .line 276
            aload 3 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         3: .line 277
            aload 3 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         4: .line 278
            aload 3 /* currentBuffer */
            bipush 9
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         5: .line 279
            aload 3 /* currentBuffer */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         6: .line 280
            aload 3 /* currentBuffer */
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.getStreamId:()I
            invokestatic io.undertow.protocols.http2.Http2ProtocolUtils.putInt:(Ljava/nio/ByteBuffer;I)V
         7: .line 281
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.encoder:Lio/undertow/protocols/http2/HpackEncoder;
            aload 1 /* headers */
            aload 3 /* currentBuffer */
            invokevirtual io.undertow.protocols.http2.HpackEncoder.encode:(Lio/undertow/util/HeaderMap;Ljava/nio/ByteBuffer;)Lio/undertow/protocols/http2/HpackEncoder$State;
            astore 4 /* result */
        start local 4 // io.undertow.protocols.http2.HpackEncoder$State result
         8: .line 282
            aload 3 /* currentBuffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            bipush 9
            isub
            istore 5 /* contFrameLength */
        start local 5 // int contFrameLength
         9: .line 283
            aload 3 /* currentBuffer */
            iconst_0
            iload 5 /* contFrameLength */
            bipush 16
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        10: .line 284
            aload 3 /* currentBuffer */
            iconst_1
            iload 5 /* contFrameLength */
            bipush 8
            ishr
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        11: .line 285
            aload 3 /* currentBuffer */
            iconst_2
            iload 5 /* contFrameLength */
            sipush 255
            iand
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        12: .line 286
            aload 3 /* currentBuffer */
            iconst_4
            aload 4 /* result */
            getstatic io.undertow.protocols.http2.HpackEncoder$State.COMPLETE:Lio/undertow/protocols/http2/HpackEncoder$State;
            if_acmpne 13
            iconst_4
            goto 14
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer io.undertow.protocols.http2.HpackEncoder$State int
      StackMap stack: java.nio.ByteBuffer int
        13: iconst_0
      StackMap locals: io.undertow.protocols.http2.Http2DataStreamSinkChannel io.undertow.util.HeaderMap io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer io.undertow.protocols.http2.HpackEncoder$State int
      StackMap stack: java.nio.ByteBuffer int int
        14: i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        15: .line 287
            aload 4 /* result */
            areturn
        end local 5 // int contFrameLength
        end local 4 // io.undertow.protocols.http2.HpackEncoder$State result
        end local 3 // java.nio.ByteBuffer currentBuffer
        end local 2 // io.undertow.connector.PooledByteBuffer current
        end local 1 // io.undertow.util.HeaderMap headers
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   16     0             this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0   16     1          headers  Lio/undertow/util/HeaderMap;
            0   16     2          current  Lio/undertow/connector/PooledByteBuffer;
            1   16     3    currentBuffer  Ljava/nio/ByteBuffer;
            8   16     4           result  Lio/undertow/protocols/http2/HpackEncoder$State;
            9   16     5  contFrameLength  I
    MethodParameters:
         Name  Flags
      headers  
      current  

  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.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 292
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 293
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.write:([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.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     1    srcs  [Ljava/nio/ByteBuffer;
            0    2     2  offset  I
            0    2     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  private void handleFailedChannel();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 297
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListenerFailure:Z
            ifeq 3
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            ifnull 3
         1: .line 298
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
         2: .line 299
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
         3: .line 301
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;

  public long write(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
         0: .line 305
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 306
            aload 0 /* this */
            aload 1 /* srcs */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.write:([Ljava/nio/ByteBuffer;)J
            lreturn
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     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=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer src
         0: .line 311
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 312
            aload 0 /* this */
            aload 1 /* src */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.write:(Ljava/nio/ByteBuffer;)I
            ireturn
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     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.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 317
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 318
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.writeFinal:([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.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     1    srcs  [Ljava/nio/ByteBuffer;
            0    2     2  offset  I
            0    2     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=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer[] srcs
         0: .line 323
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 324
            aload 0 /* this */
            aload 1 /* srcs */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.writeFinal:([Ljava/nio/ByteBuffer;)J
            lreturn
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     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.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer src
         0: .line 329
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 330
            aload 0 /* this */
            aload 1 /* src */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.writeFinal:(Ljava/nio/ByteBuffer;)I
            ireturn
        end local 1 // java.nio.ByteBuffer src
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     1   src  Ljava/nio/ByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  public boolean flush();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 335
            aload 0 /* this */
            invokevirtual io.undertow.protocols.http2.Http2DataStreamSinkChannel.handleFailedChannel:()V
         1: .line 336
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListenerReady:Z
            ifeq 4
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            ifnull 4
         2: .line 337
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
         3: .line 338
            aload 0 /* this */
            aconst_null
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
         4: .line 340
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.flush:()Z
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
    Exceptions:
      throws java.io.IOException

  protected void writeBeforeHeaderBlock(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 345
            return
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    1     1  buffer  Ljava/nio/ByteBuffer;
    MethodParameters:
        Name  Flags
      buffer  

  protected boolean isFlushRequiredOnEmptyBuffer();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 348
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.first:Z
            ireturn
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;

  public io.undertow.util.HeaderMap getHeaders();
    descriptor: ()Lio/undertow/util/HeaderMap;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 352
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.headers:Lio/undertow/util/HeaderMap;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;

  protected void handleFlushComplete(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // boolean finalFrame
         0: .line 357
            aload 0 /* this */
            iload 1 /* finalFrame */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.handleFlushComplete:(Z)V
         1: .line 358
            iload 1 /* finalFrame */
            ifeq 4
         2: .line 359
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            ifnull 4
         3: .line 360
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListenerReady:Z
         4: .line 363
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean finalFrame
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    5     1  finalFrame  Z
    MethodParameters:
            Name  Flags
      finalFrame  

  protected void channelForciblyClosed();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 367
            aload 0 /* this */
            invokespecial io.undertow.protocols.http2.Http2StreamSinkChannel.channelForciblyClosed:()V
         1: .line 368
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            ifnull 3
         2: .line 369
            aload 0 /* this */
            iconst_1
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListenerFailure:Z
         3: .line 371
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
    Exceptions:
      throws java.io.IOException

  public org.xnio.ChannelListener<io.undertow.protocols.http2.Http2DataStreamSinkChannel> getCompletionListener();
    descriptor: ()Lorg/xnio/ChannelListener;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
         0: .line 374
            aload 0 /* this */
            getfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
            areturn
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
    Signature: ()Lorg/xnio/ChannelListener<Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;>;

  public void setCompletionListener(org.xnio.ChannelListener<io.undertow.protocols.http2.Http2DataStreamSinkChannel>);
    descriptor: (Lorg/xnio/ChannelListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
        start local 1 // org.xnio.ChannelListener completionListener
         0: .line 378
            aload 0 /* this */
            aload 1 /* completionListener */
            putfield io.undertow.protocols.http2.Http2DataStreamSinkChannel.completionListener:Lorg/xnio/ChannelListener;
         1: .line 379
            return
        end local 1 // org.xnio.ChannelListener completionListener
        end local 0 // io.undertow.protocols.http2.Http2DataStreamSinkChannel this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;
            0    2     1  completionListener  Lorg/xnio/ChannelListener<Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;>;
    Signature: (Lorg/xnio/ChannelListener<Lio/undertow/protocols/http2/Http2DataStreamSinkChannel;>;)V
    MethodParameters:
                    Name  Flags
      completionListener  
}
SourceFile: "Http2DataStreamSinkChannel.java"
NestMembers:
  io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer
InnerClasses:
  public final State = io.undertow.protocols.http2.HpackEncoder$State of io.undertow.protocols.http2.HpackEncoder
  public abstract TrailersProducer = io.undertow.protocols.http2.Http2DataStreamSinkChannel$TrailersProducer of io.undertow.protocols.http2.Http2DataStreamSinkChannel