public class io.netty.example.factorial.FactorialClientHandler extends io.netty.channel.SimpleChannelInboundHandler<java.math.BigInteger>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.example.factorial.FactorialClientHandler
  super_class: io.netty.channel.SimpleChannelInboundHandler
{
  private io.netty.channel.ChannelHandlerContext ctx;
    descriptor: Lio/netty/channel/ChannelHandlerContext;
    flags: (0x0002) ACC_PRIVATE

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

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

  final java.util.concurrent.BlockingQueue<java.math.BigInteger> answer;
    descriptor: Ljava/util/concurrent/BlockingQueue;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/concurrent/BlockingQueue<Ljava/math/BigInteger;>;

  private final io.netty.channel.ChannelFutureListener numberSender;
    descriptor: Lio/netty/channel/ChannelFutureListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 34
            ldc Lio/netty/example/factorial/FactorialClientHandler;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic io.netty.example.factorial.FactorialClientHandler.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // io.netty.example.factorial.FactorialClientHandler this
         0: .line 34
            aload 0 /* this */
            invokespecial io.netty.channel.SimpleChannelInboundHandler.<init>:()V
         1: .line 38
            aload 0 /* this */
            iconst_1
            putfield io.netty.example.factorial.FactorialClientHandler.next:I
         2: .line 39
            aload 0 /* this */
            new java.util.concurrent.LinkedBlockingQueue
            dup
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
            putfield io.netty.example.factorial.FactorialClientHandler.answer:Ljava/util/concurrent/BlockingQueue;
         3: .line 99
            aload 0 /* this */
            new io.netty.example.factorial.FactorialClientHandler$1
            dup
            aload 0 /* this */
            invokespecial io.netty.example.factorial.FactorialClientHandler$1.<init>:(Lio/netty/example/factorial/FactorialClientHandler;)V
            putfield io.netty.example.factorial.FactorialClientHandler.numberSender:Lio/netty/channel/ChannelFutureListener;
         4: .line 34
            return
        end local 0 // io.netty.example.factorial.FactorialClientHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/netty/example/factorial/FactorialClientHandler;

  public java.math.BigInteger getFactorial();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=1
        start local 0 // io.netty.example.factorial.FactorialClientHandler this
         0: .line 42
            iconst_0
            istore 1 /* interrupted */
        start local 1 // boolean interrupted
         1: .line 46
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.answer:Ljava/util/concurrent/BlockingQueue;
            invokeinterface java.util.concurrent.BlockingQueue.take:()Ljava/lang/Object;
            checkcast java.math.BigInteger
            astore 3
         2: .line 52
            iload 1 /* interrupted */
            ifeq 4
         3: .line 53
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
         4: .line 46
      StackMap locals: io.netty.example.factorial.FactorialClientHandler int top java.math.BigInteger
      StackMap stack:
            aload 3
            areturn
         5: .line 47
      StackMap locals: io.netty.example.factorial.FactorialClientHandler int
      StackMap stack: java.lang.InterruptedException
            pop
         6: .line 48
            iconst_1
            istore 1 /* interrupted */
         7: .line 44
            goto 1
         8: .line 51
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
         9: .line 52
            iload 1 /* interrupted */
            ifeq 11
        10: .line 53
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        11: .line 55
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2
            athrow
        end local 1 // boolean interrupted
        end local 0 // io.netty.example.factorial.FactorialClientHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lio/netty/example/factorial/FactorialClientHandler;
            1   12     1  interrupted  Z
      Exception table:
        from    to  target  type
           1     2       5  Class java.lang.InterruptedException
           1     2       8  any
           5     8       8  any

  public void channelActive(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.example.factorial.FactorialClientHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 60
            aload 0 /* this */
            aload 1 /* ctx */
            putfield io.netty.example.factorial.FactorialClientHandler.ctx:Lio/netty/channel/ChannelHandlerContext;
         1: .line 61
            aload 0 /* this */
            invokevirtual io.netty.example.factorial.FactorialClientHandler.sendNumbers:()V
         2: .line 62
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.factorial.FactorialClientHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/example/factorial/FactorialClientHandler;
            0    3     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    MethodParameters:
      Name  Flags
      ctx   

  public void channelRead0(io.netty.channel.ChannelHandlerContext, java.math.BigInteger);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/math/BigInteger;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.netty.example.factorial.FactorialClientHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.math.BigInteger msg
         0: .line 66
            aload 0 /* this */
            dup
            getfield io.netty.example.factorial.FactorialClientHandler.receivedMessages:I
            iconst_1
            iadd
            putfield io.netty.example.factorial.FactorialClientHandler.receivedMessages:I
         1: .line 67
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.receivedMessages:I
            getstatic io.netty.example.factorial.FactorialClient.COUNT:I
            if_icmpne 3
         2: .line 69
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.close:()Lio/netty/channel/ChannelFuture;
            new io.netty.example.factorial.FactorialClientHandler$2
            dup
            aload 0 /* this */
            aload 2 /* msg */
            invokespecial io.netty.example.factorial.FactorialClientHandler$2.<init>:(Lio/netty/example/factorial/FactorialClientHandler;Ljava/math/BigInteger;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
         3: .line 77
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.math.BigInteger msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.factorial.FactorialClientHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/netty/example/factorial/FactorialClientHandler;
            0    4     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            0    4     2   msg  Ljava/math/BigInteger;
    MethodParameters:
      Name  Flags
      ctx   
      msg   final

  public void exceptionCaught(io.netty.channel.ChannelHandlerContext, java.lang.Throwable);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // io.netty.example.factorial.FactorialClientHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Throwable cause
         0: .line 81
            aload 2 /* cause */
            invokevirtual java.lang.Throwable.printStackTrace:()V
         1: .line 82
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
         2: .line 83
            return
        end local 2 // java.lang.Throwable cause
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.factorial.FactorialClientHandler this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/netty/example/factorial/FactorialClientHandler;
            0    3     1    ctx  Lio/netty/channel/ChannelHandlerContext;
            0    3     2  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      ctx    
      cause  

  private void sendNumbers();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.netty.example.factorial.FactorialClientHandler this
         0: .line 87
            aconst_null
            astore 1 /* future */
        start local 1 // io.netty.channel.ChannelFuture future
         1: .line 88
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 89
      StackMap locals: io.netty.channel.ChannelFuture int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.ctx:Lio/netty/channel/ChannelHandlerContext;
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.next:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            astore 1 /* future */
         4: .line 90
            aload 0 /* this */
            dup
            getfield io.netty.example.factorial.FactorialClientHandler.next:I
            iconst_1
            iadd
            putfield io.netty.example.factorial.FactorialClientHandler.next:I
         5: .line 88
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            sipush 4096
            if_icmpge 7
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.next:I
            getstatic io.netty.example.factorial.FactorialClient.COUNT:I
            if_icmple 3
        end local 2 // int i
         7: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.next:I
            getstatic io.netty.example.factorial.FactorialClient.COUNT:I
            if_icmpgt 10
         8: .line 93
            getstatic io.netty.example.factorial.FactorialClientHandler.$assertionsDisabled:Z
            ifne 9
            aload 1 /* future */
            ifnonnull 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 94
      StackMap locals:
      StackMap stack:
            aload 1 /* future */
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.numberSender:Lio/netty/channel/ChannelFutureListener;
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        10: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.factorial.FactorialClientHandler.ctx:Lio/netty/channel/ChannelHandlerContext;
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
        11: .line 97
            return
        end local 1 // io.netty.channel.ChannelFuture future
        end local 0 // io.netty.example.factorial.FactorialClientHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lio/netty/example/factorial/FactorialClientHandler;
            1   12     1  future  Lio/netty/channel/ChannelFuture;
            2    7     2       i  I

  public void channelRead0(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast java.math.BigInteger
            invokevirtual io.netty.example.factorial.FactorialClientHandler.channelRead0:(Lio/netty/channel/ChannelHandlerContext;Ljava/math/BigInteger;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
Signature: Lio/netty/channel/SimpleChannelInboundHandler<Ljava/math/BigInteger;>;
SourceFile: "FactorialClientHandler.java"
NestMembers:
  io.netty.example.factorial.FactorialClientHandler$1  io.netty.example.factorial.FactorialClientHandler$2
InnerClasses:
  io.netty.example.factorial.FactorialClientHandler$1
  io.netty.example.factorial.FactorialClientHandler$2