public final class io.netty.example.socksproxy.SocksServerHandler extends io.netty.channel.SimpleChannelInboundHandler<io.netty.handler.codec.socksx.SocksMessage>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.netty.example.socksproxy.SocksServerHandler
  super_class: io.netty.channel.SimpleChannelInboundHandler
{
  public static final io.netty.example.socksproxy.SocksServerHandler INSTANCE;
    descriptor: Lio/netty/example/socksproxy/SocksServerHandler;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static volatile int[] $SWITCH_TABLE$io$netty$handler$codec$socksx$SocksVersion;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 37
            new io.netty.example.socksproxy.SocksServerHandler
            dup
            invokespecial io.netty.example.socksproxy.SocksServerHandler.<init>:()V
            putstatic io.netty.example.socksproxy.SocksServerHandler.INSTANCE:Lio/netty/example/socksproxy/SocksServerHandler;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.example.socksproxy.SocksServerHandler this
         0: .line 39
            aload 0 /* this */
            invokespecial io.netty.channel.SimpleChannelInboundHandler.<init>:()V
            return
        end local 0 // io.netty.example.socksproxy.SocksServerHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/example/socksproxy/SocksServerHandler;

  public void channelRead0(io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.socksx.SocksMessage);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/socksx/SocksMessage;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // io.netty.example.socksproxy.SocksServerHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.handler.codec.socksx.SocksMessage socksRequest
         0: .line 43
            invokestatic io.netty.example.socksproxy.SocksServerHandler.$SWITCH_TABLE$io$netty$handler$codec$socksx$SocksVersion:()[I
            aload 2 /* socksRequest */
            invokeinterface io.netty.handler.codec.socksx.SocksMessage.version:()Lio/netty/handler/codec/socksx/SocksVersion;
            invokevirtual io.netty.handler.codec.socksx.SocksVersion.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 1
                    2: 9
                    3: 28
              default: 29
          }
         1: .line 45
      StackMap locals:
      StackMap stack:
            aload 2 /* socksRequest */
            checkcast io.netty.handler.codec.socksx.v4.Socks4CommandRequest
            astore 3 /* socksV4CmdRequest */
        start local 3 // io.netty.handler.codec.socksx.v4.Socks4CommandRequest socksV4CmdRequest
         2: .line 46
            aload 3 /* socksV4CmdRequest */
            invokeinterface io.netty.handler.codec.socksx.v4.Socks4CommandRequest.type:()Lio/netty/handler/codec/socksx/v4/Socks4CommandType;
            getstatic io.netty.handler.codec.socksx.v4.Socks4CommandType.CONNECT:Lio/netty/handler/codec/socksx/v4/Socks4CommandType;
            if_acmpne 7
         3: .line 47
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            iconst_1
            anewarray io.netty.channel.ChannelHandler
            dup
            iconst_0
            new io.netty.example.socksproxy.SocksServerConnectHandler
            dup
            invokespecial io.netty.example.socksproxy.SocksServerConnectHandler.<init>:()V
            aastore
            invokeinterface io.netty.channel.ChannelPipeline.addLast:([Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         4: .line 48
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 0 /* this */
            invokeinterface io.netty.channel.ChannelPipeline.remove:(Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         5: .line 49
            aload 1 /* ctx */
            aload 2 /* socksRequest */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
         6: .line 50
            goto 29
         7: .line 51
      StackMap locals: io.netty.handler.codec.socksx.v4.Socks4CommandRequest
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
         8: .line 53
            goto 29
        end local 3 // io.netty.handler.codec.socksx.v4.Socks4CommandRequest socksV4CmdRequest
         9: .line 55
      StackMap locals:
      StackMap stack:
            aload 2 /* socksRequest */
            instanceof io.netty.handler.codec.socksx.v5.Socks5InitialRequest
            ifeq 13
        10: .line 59
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            iconst_1
            anewarray io.netty.channel.ChannelHandler
            dup
            iconst_0
            new io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder
            dup
            invokespecial io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder.<init>:()V
            aastore
            invokeinterface io.netty.channel.ChannelPipeline.addFirst:([Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
        11: .line 60
            aload 1 /* ctx */
            new io.netty.handler.codec.socksx.v5.DefaultSocks5InitialResponse
            dup
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5InitialResponse.<init>:(Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;)V
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        12: .line 61
            goto 29
      StackMap locals:
      StackMap stack:
        13: aload 2 /* socksRequest */
            instanceof io.netty.handler.codec.socksx.v5.Socks5PasswordAuthRequest
            ifeq 17
        14: .line 62
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            iconst_1
            anewarray io.netty.channel.ChannelHandler
            dup
            iconst_0
            new io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder
            dup
            invokespecial io.netty.handler.codec.socksx.v5.Socks5CommandRequestDecoder.<init>:()V
            aastore
            invokeinterface io.netty.channel.ChannelPipeline.addFirst:([Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
        15: .line 63
            aload 1 /* ctx */
            new io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthResponse
            dup
            getstatic io.netty.handler.codec.socksx.v5.Socks5PasswordAuthStatus.SUCCESS:Lio/netty/handler/codec/socksx/v5/Socks5PasswordAuthStatus;
            invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthResponse.<init>:(Lio/netty/handler/codec/socksx/v5/Socks5PasswordAuthStatus;)V
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        16: .line 64
            goto 29
      StackMap locals:
      StackMap stack:
        17: aload 2 /* socksRequest */
            instanceof io.netty.handler.codec.socksx.v5.Socks5CommandRequest
            ifeq 26
        18: .line 65
            aload 2 /* socksRequest */
            checkcast io.netty.handler.codec.socksx.v5.Socks5CommandRequest
            astore 4 /* socks5CmdRequest */
        start local 4 // io.netty.handler.codec.socksx.v5.Socks5CommandRequest socks5CmdRequest
        19: .line 66
            aload 4 /* socks5CmdRequest */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandRequest.type:()Lio/netty/handler/codec/socksx/v5/Socks5CommandType;
            getstatic io.netty.handler.codec.socksx.v5.Socks5CommandType.CONNECT:Lio/netty/handler/codec/socksx/v5/Socks5CommandType;
            if_acmpne 24
        20: .line 67
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            iconst_1
            anewarray io.netty.channel.ChannelHandler
            dup
            iconst_0
            new io.netty.example.socksproxy.SocksServerConnectHandler
            dup
            invokespecial io.netty.example.socksproxy.SocksServerConnectHandler.<init>:()V
            aastore
            invokeinterface io.netty.channel.ChannelPipeline.addLast:([Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
        21: .line 68
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 0 /* this */
            invokeinterface io.netty.channel.ChannelPipeline.remove:(Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
        22: .line 69
            aload 1 /* ctx */
            aload 2 /* socksRequest */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
        23: .line 70
            goto 29
        24: .line 71
      StackMap locals: io.netty.example.socksproxy.SocksServerHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.socksx.SocksMessage top io.netty.handler.codec.socksx.v5.Socks5CommandRequest
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
        end local 4 // io.netty.handler.codec.socksx.v5.Socks5CommandRequest socks5CmdRequest
        25: .line 73
            goto 29
        26: .line 74
      StackMap locals: io.netty.example.socksproxy.SocksServerHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.socksx.SocksMessage
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
        27: .line 76
            goto 29
        28: .line 78
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
        29: .line 81
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.handler.codec.socksx.SocksMessage socksRequest
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.socksproxy.SocksServerHandler this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   30     0               this  Lio/netty/example/socksproxy/SocksServerHandler;
            0   30     1                ctx  Lio/netty/channel/ChannelHandlerContext;
            0   30     2       socksRequest  Lio/netty/handler/codec/socksx/SocksMessage;
            2    9     3  socksV4CmdRequest  Lio/netty/handler/codec/socksx/v4/Socks4CommandRequest;
           19   25     4   socks5CmdRequest  Lio/netty/handler/codec/socksx/v5/Socks5CommandRequest;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
              Name  Flags
      ctx           
      socksRequest  

  public void channelReadComplete(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.netty.example.socksproxy.SocksServerHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 85
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
         1: .line 86
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.socksproxy.SocksServerHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/example/socksproxy/SocksServerHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    MethodParameters:
      Name  Flags
      ctx   

  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.socksproxy.SocksServerHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Throwable throwable
         0: .line 90
            aload 2 /* throwable */
            invokevirtual java.lang.Throwable.printStackTrace:()V
         1: .line 91
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            invokestatic io.netty.example.socksproxy.SocksServerUtils.closeOnFlush:(Lio/netty/channel/Channel;)V
         2: .line 92
            return
        end local 2 // java.lang.Throwable throwable
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.socksproxy.SocksServerHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lio/netty/example/socksproxy/SocksServerHandler;
            0    3     1        ctx  Lio/netty/channel/ChannelHandlerContext;
            0    3     2  throwable  Ljava/lang/Throwable;
    MethodParameters:
           Name  Flags
      ctx        
      throwable  

  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 io.netty.handler.codec.socksx.SocksMessage
            invokevirtual io.netty.example.socksproxy.SocksServerHandler.channelRead0:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/socksx/SocksMessage;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  static int[] $SWITCH_TABLE$io$netty$handler$codec$socksx$SocksVersion();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 35
            getstatic io.netty.example.socksproxy.SocksServerHandler.$SWITCH_TABLE$io$netty$handler$codec$socksx$SocksVersion:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.netty.handler.codec.socksx.SocksVersion.values:()[Lio/netty/handler/codec/socksx/SocksVersion;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.netty.handler.codec.socksx.SocksVersion.SOCKS4a:Lio/netty/handler/codec/socksx/SocksVersion;
            invokevirtual io.netty.handler.codec.socksx.SocksVersion.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.netty.handler.codec.socksx.SocksVersion.SOCKS5:Lio/netty/handler/codec/socksx/SocksVersion;
            invokevirtual io.netty.handler.codec.socksx.SocksVersion.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.netty.handler.codec.socksx.SocksVersion.UNKNOWN:Lio/netty/handler/codec/socksx/SocksVersion;
            invokevirtual io.netty.handler.codec.socksx.SocksVersion.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            dup
            putstatic io.netty.example.socksproxy.SocksServerHandler.$SWITCH_TABLE$io$netty$handler$codec$socksx$SocksVersion:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
}
Signature: Lio/netty/channel/SimpleChannelInboundHandler<Lio/netty/handler/codec/socksx/SocksMessage;>;
SourceFile: "SocksServerHandler.java"
InnerClasses:
  public abstract Sharable = io.netty.channel.ChannelHandler$Sharable of io.netty.channel.ChannelHandler
    RuntimeVisibleAnnotations: 
      io.netty.channel.ChannelHandler$Sharable()