public class io.netty.handler.stream.ChunkedWriteHandler extends io.netty.channel.ChannelDuplexHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.handler.stream.ChunkedWriteHandler
  super_class: io.netty.channel.ChannelDuplexHandler
{
  private static final io.netty.util.internal.logging.InternalLogger logger;
    descriptor: Lio/netty/util/internal/logging/InternalLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.Queue<io.netty.handler.stream.ChunkedWriteHandler$PendingWrite> queue;
    descriptor: Ljava/util/Queue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Queue<Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;>;

  private volatile io.netty.channel.ChannelHandlerContext ctx;
    descriptor: Lio/netty/channel/ChannelHandlerContext;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private io.netty.handler.stream.ChunkedWriteHandler$PendingWrite currentWrite;
    descriptor: Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 71
            ldc Lio/netty/handler/stream/ChunkedWriteHandler;
            invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
         1: .line 70
            putstatic io.netty.handler.stream.ChunkedWriteHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
         2: .line 71
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
         0: .line 77
            aload 0 /* this */
            invokespecial io.netty.channel.ChannelDuplexHandler.<init>:()V
         1: .line 73
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield io.netty.handler.stream.ChunkedWriteHandler.queue:Ljava/util/Queue;
         2: .line 78
            return
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // int maxPendingWrites
         0: .line 84
            aload 0 /* this */
            invokespecial io.netty.channel.ChannelDuplexHandler.<init>:()V
         1: .line 73
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield io.netty.handler.stream.ChunkedWriteHandler.queue:Ljava/util/Queue;
         2: .line 85
            iload 1 /* maxPendingWrites */
            ifgt 6
         3: .line 86
            new java.lang.IllegalArgumentException
            dup
         4: .line 87
            new java.lang.StringBuilder
            dup
            ldc "maxPendingWrites: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* maxPendingWrites */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " (expected: > 0)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 86
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 89
      StackMap locals: io.netty.handler.stream.ChunkedWriteHandler int
      StackMap stack:
            return
        end local 1 // int maxPendingWrites
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    7     1  maxPendingWrites  I
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                  Name  Flags
      maxPendingWrites  

  public void handlerAdded(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 93
            aload 0 /* this */
            aload 1 /* ctx */
            putfield io.netty.handler.stream.ChunkedWriteHandler.ctx:Lio/netty/channel/ChannelHandlerContext;
         1: .line 94
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  public void resumeTransfer();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
         0: .line 100
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.ctx:Lio/netty/channel/ChannelHandlerContext;
            astore 1 /* ctx */
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         1: .line 101
            aload 1 /* ctx */
            ifnonnull 3
         2: .line 102
            return
         3: .line 104
      StackMap locals: io.netty.channel.ChannelHandlerContext
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
            invokeinterface io.netty.util.concurrent.EventExecutor.inEventLoop:()Z
            ifeq 6
         4: .line 105
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.resumeTransfer0:(Lio/netty/channel/ChannelHandlerContext;)V
         5: .line 106
            goto 7
         6: .line 108
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
            new io.netty.handler.stream.ChunkedWriteHandler$1
            dup
            aload 0 /* this */
            aload 1 /* ctx */
            invokespecial io.netty.handler.stream.ChunkedWriteHandler$1.<init>:(Lio/netty/handler/stream/ChunkedWriteHandler;Lio/netty/channel/ChannelHandlerContext;)V
            invokeinterface io.netty.util.concurrent.EventExecutor.execute:(Ljava/lang/Runnable;)V
         7: .line 116
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;
            1    8     1   ctx  Lio/netty/channel/ChannelHandlerContext;

  private void resumeTransfer0(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 120
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.doFlush:(Lio/netty/channel/ChannelHandlerContext;)V
         1: .line 121
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Exception
         2: astore 2 /* e */
        start local 2 // java.lang.Exception e
         3: .line 122
            getstatic io.netty.handler.stream.ChunkedWriteHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isWarnEnabled:()Z
            ifeq 5
         4: .line 123
            getstatic io.netty.handler.stream.ChunkedWriteHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Unexpected exception while sending chunks."
            aload 2 /* e */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.Exception e
         5: .line 126
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    6     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            3    5     2     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  public void write(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object msg
        start local 3 // io.netty.channel.ChannelPromise promise
         0: .line 130
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.queue:Ljava/util/Queue;
            new io.netty.handler.stream.ChunkedWriteHandler$PendingWrite
            dup
            aload 2 /* msg */
            aload 3 /* promise */
            invokespecial io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.<init>:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)V
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
         1: .line 131
            return
        end local 3 // io.netty.channel.ChannelPromise promise
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    2     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2      msg  Ljava/lang/Object;
            0    2     3  promise  Lio/netty/channel/ChannelPromise;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      ctx      
      msg      
      promise  

  public void flush(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 135
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.doFlush:(Lio/netty/channel/ChannelHandlerContext;)V
         1: .line 136
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  public void channelInactive(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 140
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.doFlush:(Lio/netty/channel/ChannelHandlerContext;)V
         1: .line 141
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelInactive:()Lio/netty/channel/ChannelHandlerContext;
            pop
         2: .line 142
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    3     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  public void channelWritabilityChanged(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 146
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.isWritable:()Z
            ifeq 2
         1: .line 148
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.doFlush:(Lio/netty/channel/ChannelHandlerContext;)V
         2: .line 150
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelWritabilityChanged:()Lio/netty/channel/ChannelHandlerContext;
            pop
         3: .line 151
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0    4     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  private void discard(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // java.lang.Throwable cause
         0: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
            astore 2 /* currentWrite */
        start local 2 // io.netty.handler.stream.ChunkedWriteHandler$PendingWrite currentWrite
         1: .line 157
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
            ifnonnull 4
         2: .line 158
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.queue:Ljava/util/Queue;
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast io.netty.handler.stream.ChunkedWriteHandler$PendingWrite
            astore 2 /* currentWrite */
         3: .line 159
            goto 5
         4: .line 160
      StackMap locals: io.netty.handler.stream.ChunkedWriteHandler$PendingWrite
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
         5: .line 163
      StackMap locals:
      StackMap stack:
            aload 2 /* currentWrite */
            ifnonnull 7
         6: .line 164
            goto 27
         7: .line 166
      StackMap locals:
      StackMap stack:
            aload 2 /* currentWrite */
            getfield io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.msg:Ljava/lang/Object;
            astore 3 /* message */
        start local 3 // java.lang.Object message
         8: .line 167
            aload 3 /* message */
            instanceof io.netty.handler.stream.ChunkedInput
            ifeq 23
         9: .line 168
            aload 3 /* message */
            checkcast io.netty.handler.stream.ChunkedInput
            astore 4 /* in */
        start local 4 // io.netty.handler.stream.ChunkedInput in
        10: .line 170
            aload 4 /* in */
            invokeinterface io.netty.handler.stream.ChunkedInput.isEndOfInput:()Z
            ifne 15
        11: .line 171
            aload 1 /* cause */
            ifnonnull 13
        12: .line 172
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            astore 1 /* cause */
        13: .line 174
      StackMap locals: java.lang.Object io.netty.handler.stream.ChunkedInput
      StackMap stack:
            aload 2 /* currentWrite */
            aload 1 /* cause */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.fail:(Ljava/lang/Throwable;)V
        14: .line 175
            goto 16
        15: .line 176
      StackMap locals:
      StackMap stack:
            aload 2 /* currentWrite */
            aload 4 /* in */
            invokeinterface io.netty.handler.stream.ChunkedInput.length:()J
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.success:(J)V
        16: .line 178
      StackMap locals:
      StackMap stack:
            aload 4 /* in */
            invokestatic io.netty.handler.stream.ChunkedWriteHandler.closeInput:(Lio/netty/handler/stream/ChunkedInput;)V
        17: .line 179
            goto 0
      StackMap locals:
      StackMap stack: java.lang.Exception
        18: astore 5 /* e */
        start local 5 // java.lang.Exception e
        19: .line 180
            aload 2 /* currentWrite */
            aload 5 /* e */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.fail:(Ljava/lang/Throwable;)V
        20: .line 181
            getstatic io.netty.handler.stream.ChunkedWriteHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            new java.lang.StringBuilder
            dup
            ldc Lio/netty/handler/stream/ChunkedInput;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".isEndOfInput() failed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* e */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        21: .line 182
            aload 4 /* in */
            invokestatic io.netty.handler.stream.ChunkedWriteHandler.closeInput:(Lio/netty/handler/stream/ChunkedInput;)V
        end local 5 // java.lang.Exception e
        end local 4 // io.netty.handler.stream.ChunkedInput in
        22: .line 184
            goto 0
        23: .line 185
      StackMap locals:
      StackMap stack:
            aload 1 /* cause */
            ifnonnull 25
        24: .line 186
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            astore 1 /* cause */
        25: .line 188
      StackMap locals:
      StackMap stack:
            aload 2 /* currentWrite */
            aload 1 /* cause */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.fail:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Object message
        end local 2 // io.netty.handler.stream.ChunkedWriteHandler$PendingWrite currentWrite
        26: .line 154
            goto 0
        27: .line 191
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Throwable cause
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   28     0          this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0   28     1         cause  Ljava/lang/Throwable;
            1   26     2  currentWrite  Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
            8   26     3       message  Ljava/lang/Object;
           10   22     4            in  Lio/netty/handler/stream/ChunkedInput<*>;
           19   22     5             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          10    17      18  Class java.lang.Exception
    MethodParameters:
       Name  Flags
      cause  

  private void doFlush(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=12, args_size=2
        start local 0 // io.netty.handler.stream.ChunkedWriteHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 194
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            astore 2 /* channel */
        start local 2 // io.netty.channel.Channel channel
         1: .line 195
            aload 2 /* channel */
            invokeinterface io.netty.channel.Channel.isActive:()Z
            ifne 4
         2: .line 196
            aload 0 /* this */
            aconst_null
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.discard:(Ljava/lang/Throwable;)V
         3: .line 197
            return
         4: .line 200
      StackMap locals: io.netty.channel.Channel
      StackMap stack:
            iconst_1
            istore 3 /* requiresFlush */
        start local 3 // boolean requiresFlush
         5: .line 201
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.alloc:()Lio/netty/buffer/ByteBufAllocator;
            astore 4 /* allocator */
        start local 4 // io.netty.buffer.ByteBufAllocator allocator
         6: .line 202
            goto 54
         7: .line 203
      StackMap locals: int io.netty.buffer.ByteBufAllocator
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
            ifnonnull 9
         8: .line 204
            aload 0 /* this */
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.queue:Ljava/util/Queue;
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast io.netty.handler.stream.ChunkedWriteHandler$PendingWrite
            putfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
         9: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
            ifnonnull 11
        10: .line 208
            goto 55
        11: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
            astore 5 /* currentWrite */
        start local 5 // io.netty.handler.stream.ChunkedWriteHandler$PendingWrite currentWrite
        12: .line 211
            aload 5 /* currentWrite */
            getfield io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.msg:Ljava/lang/Object;
            astore 6 /* pendingMessage */
        start local 6 // java.lang.Object pendingMessage
        13: .line 213
            aload 6 /* pendingMessage */
            instanceof io.netty.handler.stream.ChunkedInput
            ifeq 48
        14: .line 214
            aload 6 /* pendingMessage */
            checkcast io.netty.handler.stream.ChunkedInput
            astore 7 /* chunks */
        start local 7 // io.netty.handler.stream.ChunkedInput chunks
        15: .line 217
            aconst_null
            astore 10 /* message */
        start local 10 // java.lang.Object message
        16: .line 219
            aload 7 /* chunks */
            aload 4 /* allocator */
            invokeinterface io.netty.handler.stream.ChunkedInput.readChunk:(Lio/netty/buffer/ByteBufAllocator;)Ljava/lang/Object;
            astore 10 /* message */
        17: .line 220
            aload 7 /* chunks */
            invokeinterface io.netty.handler.stream.ChunkedInput.isEndOfInput:()Z
            istore 8 /* endOfInput */
        start local 8 // boolean endOfInput
        18: .line 222
            aload 10 /* message */
            ifnonnull 23
        19: .line 224
            iload 8 /* endOfInput */
            ifeq 20
            iconst_0
            goto 21
      StackMap locals: io.netty.handler.stream.ChunkedWriteHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel int io.netty.buffer.ByteBufAllocator io.netty.handler.stream.ChunkedWriteHandler$PendingWrite java.lang.Object io.netty.handler.stream.ChunkedInput int top java.lang.Object
      StackMap stack:
        20: iconst_1
      StackMap locals:
      StackMap stack: int
        21: istore 9 /* suspend */
        start local 9 // boolean suspend
        22: .line 225
            goto 32
        end local 9 // boolean suspend
        23: .line 226
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* suspend */
        start local 9 // boolean suspend
        24: .line 228
            goto 32
        end local 9 // boolean suspend
        end local 8 // boolean endOfInput
      StackMap locals: io.netty.handler.stream.ChunkedWriteHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel int io.netty.buffer.ByteBufAllocator io.netty.handler.stream.ChunkedWriteHandler$PendingWrite java.lang.Object io.netty.handler.stream.ChunkedInput top top java.lang.Object
      StackMap stack: java.lang.Throwable
        25: astore 11 /* t */
        start local 11 // java.lang.Throwable t
        26: .line 229
            aload 0 /* this */
            aconst_null
            putfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
        27: .line 231
            aload 10 /* message */
            ifnull 29
        28: .line 232
            aload 10 /* message */
            invokestatic io.netty.util.ReferenceCountUtil.release:(Ljava/lang/Object;)Z
            pop
        29: .line 235
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5 /* currentWrite */
            aload 11 /* t */
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.fail:(Ljava/lang/Throwable;)V
        30: .line 236
            aload 7 /* chunks */
            invokestatic io.netty.handler.stream.ChunkedWriteHandler.closeInput:(Lio/netty/handler/stream/ChunkedInput;)V
        31: .line 237
            goto 55
        end local 11 // java.lang.Throwable t
        start local 8 // boolean endOfInput
        start local 9 // boolean suspend
        32: .line 240
      StackMap locals: io.netty.handler.stream.ChunkedWriteHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel int io.netty.buffer.ByteBufAllocator io.netty.handler.stream.ChunkedWriteHandler$PendingWrite java.lang.Object io.netty.handler.stream.ChunkedInput int int java.lang.Object
      StackMap stack:
            iload 9 /* suspend */
            ifeq 34
        33: .line 244
            goto 55
        34: .line 247
      StackMap locals:
      StackMap stack:
            aload 10 /* message */
            ifnonnull 36
        35: .line 250
            getstatic io.netty.buffer.Unpooled.EMPTY_BUFFER:Lio/netty/buffer/ByteBuf;
            astore 10 /* message */
        36: .line 253
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            aload 10 /* message */
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            astore 11 /* f */
        start local 11 // io.netty.channel.ChannelFuture f
        37: .line 254
            iload 8 /* endOfInput */
            ifeq 41
        38: .line 255
            aload 0 /* this */
            aconst_null
            putfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
        39: .line 262
            aload 11 /* f */
            new io.netty.handler.stream.ChunkedWriteHandler$2
            dup
            aload 0 /* this */
            aload 5 /* currentWrite */
            aload 7 /* chunks */
            invokespecial io.netty.handler.stream.ChunkedWriteHandler$2.<init>:(Lio/netty/handler/stream/ChunkedWriteHandler;Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;Lio/netty/handler/stream/ChunkedInput;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        40: .line 270
            goto 45
      StackMap locals: io.netty.channel.ChannelFuture
      StackMap stack:
        41: aload 2 /* channel */
            invokeinterface io.netty.channel.Channel.isWritable:()Z
            ifeq 44
        42: .line 271
            aload 11 /* f */
            new io.netty.handler.stream.ChunkedWriteHandler$3
            dup
            aload 0 /* this */
            aload 6 /* pendingMessage */
            aload 5 /* currentWrite */
            aload 7 /* chunks */
            invokespecial io.netty.handler.stream.ChunkedWriteHandler$3.<init>:(Lio/netty/handler/stream/ChunkedWriteHandler;Ljava/lang/Object;Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;Lio/netty/handler/stream/ChunkedInput;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        43: .line 282
            goto 45
        44: .line 283
      StackMap locals:
      StackMap stack:
            aload 11 /* f */
            new io.netty.handler.stream.ChunkedWriteHandler$4
            dup
            aload 0 /* this */
            aload 6 /* pendingMessage */
            aload 5 /* currentWrite */
            aload 7 /* chunks */
            aload 2 /* channel */
            invokespecial io.netty.handler.stream.ChunkedWriteHandler$4.<init>:(Lio/netty/handler/stream/ChunkedWriteHandler;Ljava/lang/Object;Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;Lio/netty/handler/stream/ChunkedInput;Lio/netty/channel/Channel;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        45: .line 299
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
        46: .line 300
            iconst_0
            istore 3 /* requiresFlush */
        end local 11 // io.netty.channel.ChannelFuture f
        end local 10 // java.lang.Object message
        end local 9 // boolean suspend
        end local 8 // boolean endOfInput
        end local 7 // io.netty.handler.stream.ChunkedInput chunks
        47: .line 301
            goto 51
        48: .line 302
      StackMap locals: io.netty.handler.stream.ChunkedWriteHandler io.netty.channel.ChannelHandlerContext io.netty.channel.Channel int io.netty.buffer.ByteBufAllocator io.netty.handler.stream.ChunkedWriteHandler$PendingWrite java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.netty.handler.stream.ChunkedWriteHandler.currentWrite:Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
        49: .line 303
            aload 1 /* ctx */
            aload 6 /* pendingMessage */
            aload 5 /* currentWrite */
            getfield io.netty.handler.stream.ChunkedWriteHandler$PendingWrite.promise:Lio/netty/channel/ChannelPromise;
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
        50: .line 304
            iconst_1
            istore 3 /* requiresFlush */
        51: .line 307
      StackMap locals:
      StackMap stack:
            aload 2 /* channel */
            invokeinterface io.netty.channel.Channel.isActive:()Z
            ifne 54
        52: .line 308
            aload 0 /* this */
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            invokevirtual io.netty.handler.stream.ChunkedWriteHandler.discard:(Ljava/lang/Throwable;)V
        53: .line 309
            goto 55
        end local 6 // java.lang.Object pendingMessage
        end local 5 // io.netty.handler.stream.ChunkedWriteHandler$PendingWrite currentWrite
        54: .line 202
      StackMap locals:
      StackMap stack:
            aload 2 /* channel */
            invokeinterface io.netty.channel.Channel.isWritable:()Z
            ifne 7
        55: .line 313
      StackMap locals:
      StackMap stack:
            iload 3 /* requiresFlush */
            ifeq 57
        56: .line 314
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
        57: .line 316
      StackMap locals:
      StackMap stack:
            return
        end local 4 // io.netty.buffer.ByteBufAllocator allocator
        end local 3 // boolean requiresFlush
        end local 2 // io.netty.channel.Channel channel
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.stream.ChunkedWriteHandler this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   58     0            this  Lio/netty/handler/stream/ChunkedWriteHandler;
            0   58     1             ctx  Lio/netty/channel/ChannelHandlerContext;
            1   58     2         channel  Lio/netty/channel/Channel;
            5   58     3   requiresFlush  Z
            6   58     4       allocator  Lio/netty/buffer/ByteBufAllocator;
           12   54     5    currentWrite  Lio/netty/handler/stream/ChunkedWriteHandler$PendingWrite;
           13   54     6  pendingMessage  Ljava/lang/Object;
           15   47     7          chunks  Lio/netty/handler/stream/ChunkedInput<*>;
           18   25     8      endOfInput  Z
           32   47     8      endOfInput  Z
           22   23     9         suspend  Z
           24   25     9         suspend  Z
           32   47     9         suspend  Z
           16   47    10         message  Ljava/lang/Object;
           26   32    11               t  Ljava/lang/Throwable;
           37   47    11               f  Lio/netty/channel/ChannelFuture;
      Exception table:
        from    to  target  type
          16    24      25  Class java.lang.Throwable
    MethodParameters:
      Name  Flags
      ctx   final

  private static void closeInput(io.netty.handler.stream.ChunkedInput<?>);
    descriptor: (Lio/netty/handler/stream/ChunkedInput;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.netty.handler.stream.ChunkedInput chunks
         0: .line 320
            aload 0 /* chunks */
            invokeinterface io.netty.handler.stream.ChunkedInput.close:()V
         1: .line 321
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1 /* t */
        start local 1 // java.lang.Throwable t
         3: .line 322
            getstatic io.netty.handler.stream.ChunkedWriteHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isWarnEnabled:()Z
            ifeq 5
         4: .line 323
            getstatic io.netty.handler.stream.ChunkedWriteHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Failed to close a chunked input."
            aload 1 /* t */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Throwable t
         5: .line 326
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.handler.stream.ChunkedInput chunks
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  chunks  Lio/netty/handler/stream/ChunkedInput<*>;
            3    5     1       t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    Signature: (Lio/netty/handler/stream/ChunkedInput<*>;)V
    MethodParameters:
        Name  Flags
      chunks  
}
SourceFile: "ChunkedWriteHandler.java"
NestMembers:
  io.netty.handler.stream.ChunkedWriteHandler$1  io.netty.handler.stream.ChunkedWriteHandler$2  io.netty.handler.stream.ChunkedWriteHandler$3  io.netty.handler.stream.ChunkedWriteHandler$4  io.netty.handler.stream.ChunkedWriteHandler$PendingWrite
InnerClasses:
  io.netty.handler.stream.ChunkedWriteHandler$1
  io.netty.handler.stream.ChunkedWriteHandler$2
  io.netty.handler.stream.ChunkedWriteHandler$3
  io.netty.handler.stream.ChunkedWriteHandler$4
  private final PendingWrite = io.netty.handler.stream.ChunkedWriteHandler$PendingWrite of io.netty.handler.stream.ChunkedWriteHandler