public class io.netty.example.http.snoop.HttpSnoopServerHandler extends io.netty.channel.SimpleChannelInboundHandler<java.lang.Object>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.example.http.snoop.HttpSnoopServerHandler
  super_class: io.netty.channel.SimpleChannelInboundHandler
{
  private io.netty.handler.codec.http.HttpRequest request;
    descriptor: Lio/netty/handler/codec/http/HttpRequest;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.StringBuilder buf;
    descriptor: Ljava/lang/StringBuilder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
         0: .line 48
            aload 0 /* this */
            invokespecial io.netty.channel.SimpleChannelInboundHandler.<init>:()V
         1: .line 52
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            putfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
         2: .line 48
            return
        end local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/example/http/snoop/HttpSnoopServerHandler;

  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.http.snoop.HttpSnoopServerHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 56
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
         1: .line 57
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/example/http/snoop/HttpSnoopServerHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    MethodParameters:
      Name  Flags
      ctx   

  protected void channelRead0(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=13, args_size=3
        start local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object msg
         0: .line 61
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.HttpRequest
            ifeq 33
         1: .line 62
            aload 0 /* this */
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.HttpRequest
            dup_x1
            putfield io.netty.example.http.snoop.HttpSnoopServerHandler.request:Lio/netty/handler/codec/http/HttpRequest;
            astore 3 /* request */
        start local 3 // io.netty.handler.codec.http.HttpRequest request
         2: .line 64
            aload 3 /* request */
            invokestatic io.netty.handler.codec.http.HttpUtil.is100ContinueExpected:(Lio/netty/handler/codec/http/HttpMessage;)Z
            ifeq 4
         3: .line 65
            aload 1 /* ctx */
            invokestatic io.netty.example.http.snoop.HttpSnoopServerHandler.send100Continue:(Lio/netty/channel/ChannelHandlerContext;)V
         4: .line 68
      StackMap locals: io.netty.handler.codec.http.HttpRequest
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            iconst_0
            invokevirtual java.lang.StringBuilder.setLength:(I)V
         5: .line 69
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "WELCOME TO THE WILD WILD WEB SERVER\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 70
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "===================================\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 72
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "VERSION: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.protocolVersion:()Lio/netty/handler/codec/http/HttpVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 73
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "HOSTNAME: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.HOST:Lio/netty/util/AsciiString;
            ldc "unknown"
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 74
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "REQUEST_URI: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.uri:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\r\n\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 76
            aload 3 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            astore 4 /* headers */
        start local 4 // io.netty.handler.codec.http.HttpHeaders headers
        11: .line 77
            aload 4 /* headers */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.isEmpty:()Z
            ifne 19
        12: .line 78
            aload 4 /* headers */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.iterator:()Ljava/util/Iterator;
            astore 6
            goto 17
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpRequest io.netty.handler.codec.http.HttpHeaders top java.util.Iterator
      StackMap stack:
        13: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 5 /* h */
        start local 5 // java.util.Map$Entry h
        14: .line 79
            aload 5 /* h */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 7 /* key */
        start local 7 // java.lang.CharSequence key
        15: .line 80
            aload 5 /* h */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 8 /* value */
        start local 8 // java.lang.CharSequence value
        16: .line 81
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "HEADER: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 8 // java.lang.CharSequence value
        end local 7 // java.lang.CharSequence key
        end local 5 // java.util.Map$Entry h
        17: .line 78
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        18: .line 83
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 86
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpRequest io.netty.handler.codec.http.HttpHeaders
      StackMap stack:
            new io.netty.handler.codec.http.QueryStringDecoder
            dup
            aload 3 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.uri:()Ljava/lang/String;
            invokespecial io.netty.handler.codec.http.QueryStringDecoder.<init>:(Ljava/lang/String;)V
            astore 5 /* queryStringDecoder */
        start local 5 // io.netty.handler.codec.http.QueryStringDecoder queryStringDecoder
        20: .line 87
            aload 5 /* queryStringDecoder */
            invokevirtual io.netty.handler.codec.http.QueryStringDecoder.parameters:()Ljava/util/Map;
            astore 6 /* params */
        start local 6 // java.util.Map params
        21: .line 88
            aload 6 /* params */
            invokeinterface java.util.Map.isEmpty:()Z
            ifne 32
        22: .line 89
            aload 6 /* params */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 30
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpRequest io.netty.handler.codec.http.HttpHeaders io.netty.handler.codec.http.QueryStringDecoder java.util.Map top java.util.Iterator
      StackMap stack:
        23: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 7 /* p */
        start local 7 // java.util.Map$Entry p
        24: .line 90
            aload 7 /* p */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* key */
        start local 9 // java.lang.String key
        25: .line 91
            aload 7 /* p */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.List
            astore 10 /* vals */
        start local 10 // java.util.List vals
        26: .line 92
            aload 10 /* vals */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 12
            goto 29
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpRequest io.netty.handler.codec.http.HttpHeaders io.netty.handler.codec.http.QueryStringDecoder java.util.Map java.util.Map$Entry java.util.Iterator java.lang.String java.util.List top java.util.Iterator
      StackMap stack:
        27: aload 12
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 11 /* val */
        start local 11 // java.lang.String val
        28: .line 93
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "PARAM: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 11 /* val */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 11 // java.lang.String val
        29: .line 92
      StackMap locals:
      StackMap stack:
            aload 12
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 27
        end local 10 // java.util.List vals
        end local 9 // java.lang.String key
        end local 7 // java.util.Map$Entry p
        30: .line 89
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpRequest io.netty.handler.codec.http.HttpHeaders io.netty.handler.codec.http.QueryStringDecoder java.util.Map top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 23
        31: .line 96
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        32: .line 99
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpRequest io.netty.handler.codec.http.HttpHeaders io.netty.handler.codec.http.QueryStringDecoder java.util.Map
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            aload 3 /* request */
            invokestatic io.netty.example.http.snoop.HttpSnoopServerHandler.appendDecoderResult:(Ljava/lang/StringBuilder;Lio/netty/handler/codec/http/HttpObject;)V
        end local 6 // java.util.Map params
        end local 5 // io.netty.handler.codec.http.QueryStringDecoder queryStringDecoder
        end local 4 // io.netty.handler.codec.http.HttpHeaders headers
        end local 3 // io.netty.handler.codec.http.HttpRequest request
        33: .line 102
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.HttpContent
            ifeq 57
        34: .line 103
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.HttpContent
            astore 3 /* httpContent */
        start local 3 // io.netty.handler.codec.http.HttpContent httpContent
        35: .line 105
            aload 3 /* httpContent */
            invokeinterface io.netty.handler.codec.http.HttpContent.content:()Lio/netty/buffer/ByteBuf;
            astore 4 /* content */
        start local 4 // io.netty.buffer.ByteBuf content
        36: .line 106
            aload 4 /* content */
            invokevirtual io.netty.buffer.ByteBuf.isReadable:()Z
            ifeq 41
        37: .line 107
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "CONTENT: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        38: .line 108
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            aload 4 /* content */
            getstatic io.netty.util.CharsetUtil.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual io.netty.buffer.ByteBuf.toString:(Ljava/nio/charset/Charset;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        39: .line 109
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        40: .line 110
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.request:Lio/netty/handler/codec/http/HttpRequest;
            invokestatic io.netty.example.http.snoop.HttpSnoopServerHandler.appendDecoderResult:(Ljava/lang/StringBuilder;Lio/netty/handler/codec/http/HttpObject;)V
        41: .line 113
      StackMap locals: io.netty.handler.codec.http.HttpContent io.netty.buffer.ByteBuf
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.LastHttpContent
            ifeq 57
        42: .line 114
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "END OF CONTENT\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        43: .line 116
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.LastHttpContent
            astore 5 /* trailer */
        start local 5 // io.netty.handler.codec.http.LastHttpContent trailer
        44: .line 117
            aload 5 /* trailer */
            invokeinterface io.netty.handler.codec.http.LastHttpContent.trailingHeaders:()Lio/netty/handler/codec/http/HttpHeaders;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.isEmpty:()Z
            ifne 55
        45: .line 118
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        46: .line 119
            aload 5 /* trailer */
            invokeinterface io.netty.handler.codec.http.LastHttpContent.trailingHeaders:()Lio/netty/handler/codec/http/HttpHeaders;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.names:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 53
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpContent io.netty.buffer.ByteBuf io.netty.handler.codec.http.LastHttpContent top java.util.Iterator
      StackMap stack:
        47: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 6 /* name */
        start local 6 // java.lang.CharSequence name
        48: .line 120
            aload 5 /* trailer */
            invokeinterface io.netty.handler.codec.http.LastHttpContent.trailingHeaders:()Lio/netty/handler/codec/http/HttpHeaders;
            aload 6 /* name */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.getAll:(Ljava/lang/CharSequence;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 52
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpContent io.netty.buffer.ByteBuf io.netty.handler.codec.http.LastHttpContent java.lang.CharSequence java.util.Iterator top java.util.Iterator
      StackMap stack:
        49: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 8 /* value */
        start local 8 // java.lang.CharSequence value
        50: .line 121
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "TRAILING HEADER: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        51: .line 122
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            aload 6 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 8 // java.lang.CharSequence value
        52: .line 120
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 49
        end local 6 // java.lang.CharSequence name
        53: .line 119
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpContent io.netty.buffer.ByteBuf io.netty.handler.codec.http.LastHttpContent top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 47
        54: .line 125
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        55: .line 128
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.http.HttpContent io.netty.buffer.ByteBuf io.netty.handler.codec.http.LastHttpContent
      StackMap stack:
            aload 0 /* this */
            aload 5 /* trailer */
            aload 1 /* ctx */
            invokevirtual io.netty.example.http.snoop.HttpSnoopServerHandler.writeResponse:(Lio/netty/handler/codec/http/HttpObject;Lio/netty/channel/ChannelHandlerContext;)Z
            ifne 57
        56: .line 130
            aload 1 /* ctx */
            getstatic io.netty.buffer.Unpooled.EMPTY_BUFFER:Lio/netty/buffer/ByteBuf;
            invokeinterface io.netty.channel.ChannelHandlerContext.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            getstatic io.netty.channel.ChannelFutureListener.CLOSE:Lio/netty/channel/ChannelFutureListener;
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        end local 5 // io.netty.handler.codec.http.LastHttpContent trailer
        end local 4 // io.netty.buffer.ByteBuf content
        end local 3 // io.netty.handler.codec.http.HttpContent httpContent
        57: .line 134
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   58     0                this  Lio/netty/example/http/snoop/HttpSnoopServerHandler;
            0   58     1                 ctx  Lio/netty/channel/ChannelHandlerContext;
            0   58     2                 msg  Ljava/lang/Object;
            2   33     3             request  Lio/netty/handler/codec/http/HttpRequest;
           11   33     4             headers  Lio/netty/handler/codec/http/HttpHeaders;
           14   17     5                   h  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
           15   17     7                 key  Ljava/lang/CharSequence;
           16   17     8               value  Ljava/lang/CharSequence;
           20   33     5  queryStringDecoder  Lio/netty/handler/codec/http/QueryStringDecoder;
           21   33     6              params  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
           24   30     7                   p  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
           25   30     9                 key  Ljava/lang/String;
           26   30    10                vals  Ljava/util/List<Ljava/lang/String;>;
           28   29    11                 val  Ljava/lang/String;
           35   57     3         httpContent  Lio/netty/handler/codec/http/HttpContent;
           36   57     4             content  Lio/netty/buffer/ByteBuf;
           44   57     5             trailer  Lio/netty/handler/codec/http/LastHttpContent;
           48   53     6                name  Ljava/lang/CharSequence;
           50   52     8               value  Ljava/lang/CharSequence;
    MethodParameters:
      Name  Flags
      ctx   
      msg   

  private static void appendDecoderResult(java.lang.StringBuilder, io.netty.handler.codec.http.HttpObject);
    descriptor: (Ljava/lang/StringBuilder;Lio/netty/handler/codec/http/HttpObject;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.StringBuilder buf
        start local 1 // io.netty.handler.codec.http.HttpObject o
         0: .line 137
            aload 1 /* o */
            invokeinterface io.netty.handler.codec.http.HttpObject.decoderResult:()Lio/netty/handler/codec/DecoderResult;
            astore 2 /* result */
        start local 2 // io.netty.handler.codec.DecoderResult result
         1: .line 138
            aload 2 /* result */
            invokevirtual io.netty.handler.codec.DecoderResult.isSuccess:()Z
            ifeq 3
         2: .line 139
            return
         3: .line 142
      StackMap locals: io.netty.handler.codec.DecoderResult
      StackMap stack:
            aload 0 /* buf */
            ldc ".. WITH DECODER FAILURE: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 143
            aload 0 /* buf */
            aload 2 /* result */
            invokevirtual io.netty.handler.codec.DecoderResult.cause:()Ljava/lang/Throwable;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         5: .line 144
            aload 0 /* buf */
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 145
            return
        end local 2 // io.netty.handler.codec.DecoderResult result
        end local 1 // io.netty.handler.codec.http.HttpObject o
        end local 0 // java.lang.StringBuilder buf
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0     buf  Ljava/lang/StringBuilder;
            0    7     1       o  Lio/netty/handler/codec/http/HttpObject;
            1    7     2  result  Lio/netty/handler/codec/DecoderResult;
    MethodParameters:
      Name  Flags
      buf   
      o     

  private boolean writeResponse(io.netty.handler.codec.http.HttpObject, io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/handler/codec/http/HttpObject;Lio/netty/channel/ChannelHandlerContext;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
        start local 1 // io.netty.handler.codec.http.HttpObject currentObj
        start local 2 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 149
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.request:Lio/netty/handler/codec/http/HttpRequest;
            invokestatic io.netty.handler.codec.http.HttpUtil.isKeepAlive:(Lio/netty/handler/codec/http/HttpMessage;)Z
            istore 3 /* keepAlive */
        start local 3 // boolean keepAlive
         1: .line 151
            new io.netty.handler.codec.http.DefaultFullHttpResponse
            dup
         2: .line 152
            getstatic io.netty.handler.codec.http.HttpVersion.HTTP_1_1:Lio/netty/handler/codec/http/HttpVersion;
            aload 1 /* currentObj */
            invokeinterface io.netty.handler.codec.http.HttpObject.decoderResult:()Lio/netty/handler/codec/DecoderResult;
            invokevirtual io.netty.handler.codec.DecoderResult.isSuccess:()Z
            ifeq 3
            getstatic io.netty.handler.codec.http.HttpResponseStatus.OK:Lio/netty/handler/codec/http/HttpResponseStatus;
            goto 4
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.handler.codec.http.HttpObject io.netty.channel.ChannelHandlerContext int
      StackMap stack: new 1 new 1 io.netty.handler.codec.http.HttpVersion
         3: getstatic io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST:Lio/netty/handler/codec/http/HttpResponseStatus;
         4: .line 153
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.handler.codec.http.HttpObject io.netty.channel.ChannelHandlerContext int
      StackMap stack: new 1 new 1 io.netty.handler.codec.http.HttpVersion io.netty.handler.codec.http.HttpResponseStatus
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.buf:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            getstatic io.netty.util.CharsetUtil.UTF_8:Ljava/nio/charset/Charset;
            invokestatic io.netty.buffer.Unpooled.copiedBuffer:(Ljava/lang/CharSequence;Ljava/nio/charset/Charset;)Lio/netty/buffer/ByteBuf;
         5: .line 151
            invokespecial io.netty.handler.codec.http.DefaultFullHttpResponse.<init>:(Lio/netty/handler/codec/http/HttpVersion;Lio/netty/handler/codec/http/HttpResponseStatus;Lio/netty/buffer/ByteBuf;)V
            astore 4 /* response */
        start local 4 // io.netty.handler.codec.http.FullHttpResponse response
         6: .line 155
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE:Lio/netty/util/AsciiString;
            ldc "text/plain; charset=UTF-8"
            invokevirtual io.netty.handler.codec.http.HttpHeaders.set:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         7: .line 157
            iload 3 /* keepAlive */
            ifeq 10
         8: .line 159
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.CONTENT_LENGTH:Lio/netty/util/AsciiString;
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.content:()Lio/netty/buffer/ByteBuf;
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            invokevirtual io.netty.handler.codec.http.HttpHeaders.setInt:(Ljava/lang/CharSequence;I)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         9: .line 162
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.CONNECTION:Lio/netty/util/AsciiString;
            getstatic io.netty.handler.codec.http.HttpHeaderValues.KEEP_ALIVE:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.set:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        10: .line 166
      StackMap locals: io.netty.handler.codec.http.FullHttpResponse
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.example.http.snoop.HttpSnoopServerHandler.request:Lio/netty/handler/codec/http/HttpRequest;
            invokeinterface io.netty.handler.codec.http.HttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.COOKIE:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 5 /* cookieString */
        start local 5 // java.lang.String cookieString
        11: .line 167
            aload 5 /* cookieString */
            ifnull 19
        12: .line 168
            getstatic io.netty.handler.codec.http.cookie.ServerCookieDecoder.STRICT:Lio/netty/handler/codec/http/cookie/ServerCookieDecoder;
            aload 5 /* cookieString */
            invokevirtual io.netty.handler.codec.http.cookie.ServerCookieDecoder.decode:(Ljava/lang/String;)Ljava/util/Set;
            astore 6 /* cookies */
        start local 6 // java.util.Set cookies
        13: .line 169
            aload 6 /* cookies */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 21
        14: .line 171
            aload 6 /* cookies */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 8
            goto 17
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.handler.codec.http.HttpObject io.netty.channel.ChannelHandlerContext int io.netty.handler.codec.http.FullHttpResponse java.lang.String java.util.Set top java.util.Iterator
      StackMap stack:
        15: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.netty.handler.codec.http.cookie.Cookie
            astore 7 /* cookie */
        start local 7 // io.netty.handler.codec.http.cookie.Cookie cookie
        16: .line 172
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SET_COOKIE:Lio/netty/util/AsciiString;
            getstatic io.netty.handler.codec.http.cookie.ServerCookieEncoder.STRICT:Lio/netty/handler/codec/http/cookie/ServerCookieEncoder;
            aload 7 /* cookie */
            invokevirtual io.netty.handler.codec.http.cookie.ServerCookieEncoder.encode:(Lio/netty/handler/codec/http/cookie/Cookie;)Ljava/lang/String;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        end local 7 // io.netty.handler.codec.http.cookie.Cookie cookie
        17: .line 171
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        end local 6 // java.util.Set cookies
        18: .line 175
            goto 21
        19: .line 177
      StackMap locals: io.netty.example.http.snoop.HttpSnoopServerHandler io.netty.handler.codec.http.HttpObject io.netty.channel.ChannelHandlerContext int io.netty.handler.codec.http.FullHttpResponse java.lang.String
      StackMap stack:
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SET_COOKIE:Lio/netty/util/AsciiString;
            getstatic io.netty.handler.codec.http.cookie.ServerCookieEncoder.STRICT:Lio/netty/handler/codec/http/cookie/ServerCookieEncoder;
            ldc "key1"
            ldc "value1"
            invokevirtual io.netty.handler.codec.http.cookie.ServerCookieEncoder.encode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        20: .line 178
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SET_COOKIE:Lio/netty/util/AsciiString;
            getstatic io.netty.handler.codec.http.cookie.ServerCookieEncoder.STRICT:Lio/netty/handler/codec/http/cookie/ServerCookieEncoder;
            ldc "key2"
            ldc "value2"
            invokevirtual io.netty.handler.codec.http.cookie.ServerCookieEncoder.encode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        21: .line 182
      StackMap locals:
      StackMap stack:
            aload 2 /* ctx */
            aload 4 /* response */
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        22: .line 184
            iload 3 /* keepAlive */
            ireturn
        end local 5 // java.lang.String cookieString
        end local 4 // io.netty.handler.codec.http.FullHttpResponse response
        end local 3 // boolean keepAlive
        end local 2 // io.netty.channel.ChannelHandlerContext ctx
        end local 1 // io.netty.handler.codec.http.HttpObject currentObj
        end local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   23     0          this  Lio/netty/example/http/snoop/HttpSnoopServerHandler;
            0   23     1    currentObj  Lio/netty/handler/codec/http/HttpObject;
            0   23     2           ctx  Lio/netty/channel/ChannelHandlerContext;
            1   23     3     keepAlive  Z
            6   23     4      response  Lio/netty/handler/codec/http/FullHttpResponse;
           11   23     5  cookieString  Ljava/lang/String;
           13   18     6       cookies  Ljava/util/Set<Lio/netty/handler/codec/http/cookie/Cookie;>;
           16   17     7        cookie  Lio/netty/handler/codec/http/cookie/Cookie;
    MethodParameters:
            Name  Flags
      currentObj  
      ctx         

  private static void send100Continue(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 188
            new io.netty.handler.codec.http.DefaultFullHttpResponse
            dup
            getstatic io.netty.handler.codec.http.HttpVersion.HTTP_1_1:Lio/netty/handler/codec/http/HttpVersion;
            getstatic io.netty.handler.codec.http.HttpResponseStatus.CONTINUE:Lio/netty/handler/codec/http/HttpResponseStatus;
            invokespecial io.netty.handler.codec.http.DefaultFullHttpResponse.<init>:(Lio/netty/handler/codec/http/HttpVersion;Lio/netty/handler/codec/http/HttpResponseStatus;)V
            astore 1 /* response */
        start local 1 // io.netty.handler.codec.http.FullHttpResponse response
         1: .line 189
            aload 0 /* ctx */
            aload 1 /* response */
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
         2: .line 190
            return
        end local 1 // io.netty.handler.codec.http.FullHttpResponse response
        end local 0 // io.netty.channel.ChannelHandlerContext ctx
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0       ctx  Lio/netty/channel/ChannelHandlerContext;
            1    3     1  response  Lio/netty/handler/codec/http/FullHttpResponse;
    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.http.snoop.HttpSnoopServerHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Throwable cause
         0: .line 194
            aload 2 /* cause */
            invokevirtual java.lang.Throwable.printStackTrace:()V
         1: .line 195
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
         2: .line 196
            return
        end local 2 // java.lang.Throwable cause
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.example.http.snoop.HttpSnoopServerHandler this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lio/netty/example/http/snoop/HttpSnoopServerHandler;
            0    3     1    ctx  Lio/netty/channel/ChannelHandlerContext;
            0    3     2  cause  Ljava/lang/Throwable;
    MethodParameters:
       Name  Flags
      ctx    
      cause  
}
Signature: Lio/netty/channel/SimpleChannelInboundHandler<Ljava/lang/Object;>;
SourceFile: "HttpSnoopServerHandler.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map