public class io.netty.handler.codec.http.HttpClientUpgradeHandler extends io.netty.handler.codec.http.HttpObjectAggregator implements io.netty.channel.ChannelOutboundHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.handler.codec.http.HttpClientUpgradeHandler
  super_class: io.netty.handler.codec.http.HttpObjectAggregator
{
  private final io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec sourceCodec;
    descriptor: Lio/netty/handler/codec/http/HttpClientUpgradeHandler$SourceCodec;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec upgradeCodec;
    descriptor: Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  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 38
            ldc Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            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.handler.codec.http.HttpClientUpgradeHandler.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec, io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec, int);
    descriptor: (Lio/netty/handler/codec/http/HttpClientUpgradeHandler$SourceCodec;Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec sourceCodec
        start local 2 // io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec upgradeCodec
        start local 3 // int maxContentLength
         0: .line 117
            aload 0 /* this */
            iload 3 /* maxContentLength */
            invokespecial io.netty.handler.codec.http.HttpObjectAggregator.<init>:(I)V
         1: .line 118
            aload 1 /* sourceCodec */
            ifnonnull 3
         2: .line 119
            new java.lang.NullPointerException
            dup
            ldc "sourceCodec"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 121
      StackMap locals: io.netty.handler.codec.http.HttpClientUpgradeHandler io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec int
      StackMap stack:
            aload 2 /* upgradeCodec */
            ifnonnull 5
         4: .line 122
            new java.lang.NullPointerException
            dup
            ldc "upgradeCodec"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sourceCodec */
            putfield io.netty.handler.codec.http.HttpClientUpgradeHandler.sourceCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$SourceCodec;
         6: .line 125
            aload 0 /* this */
            aload 2 /* upgradeCodec */
            putfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
         7: .line 126
            return
        end local 3 // int maxContentLength
        end local 2 // io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec upgradeCodec
        end local 1 // io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec sourceCodec
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    8     1       sourceCodec  Lio/netty/handler/codec/http/HttpClientUpgradeHandler$SourceCodec;
            0    8     2      upgradeCodec  Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
            0    8     3  maxContentLength  I
    MethodParameters:
                  Name  Flags
      sourceCodec       
      upgradeCodec      
      maxContentLength  

  public void bind(io.netty.channel.ChannelHandlerContext, java.net.SocketAddress, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/net/SocketAddress;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.net.SocketAddress localAddress
        start local 3 // io.netty.channel.ChannelPromise promise
         0: .line 130
            aload 1 /* ctx */
            aload 2 /* localAddress */
            aload 3 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.bind:(Ljava/net/SocketAddress;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
         1: .line 131
            return
        end local 3 // io.netty.channel.ChannelPromise promise
        end local 2 // java.net.SocketAddress localAddress
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1           ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2  localAddress  Ljava/net/SocketAddress;
            0    2     3       promise  Lio/netty/channel/ChannelPromise;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
              Name  Flags
      ctx           
      localAddress  
      promise       

  public void connect(io.netty.channel.ChannelHandlerContext, java.net.SocketAddress, java.net.SocketAddress, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/net/SocketAddress;Ljava/net/SocketAddress;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.net.SocketAddress remoteAddress
        start local 3 // java.net.SocketAddress localAddress
        start local 4 // io.netty.channel.ChannelPromise promise
         0: .line 136
            aload 1 /* ctx */
            aload 2 /* remoteAddress */
            aload 3 /* localAddress */
            aload 4 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.connect:(Ljava/net/SocketAddress;Ljava/net/SocketAddress;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
         1: .line 137
            return
        end local 4 // io.netty.channel.ChannelPromise promise
        end local 3 // java.net.SocketAddress localAddress
        end local 2 // java.net.SocketAddress remoteAddress
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1            ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2  remoteAddress  Ljava/net/SocketAddress;
            0    2     3   localAddress  Ljava/net/SocketAddress;
            0    2     4        promise  Lio/netty/channel/ChannelPromise;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
               Name  Flags
      ctx            
      remoteAddress  
      localAddress   
      promise        

  public void disconnect(io.netty.channel.ChannelHandlerContext, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.channel.ChannelPromise promise
         0: .line 141
            aload 1 /* ctx */
            aload 2 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.disconnect:(Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
         1: .line 142
            return
        end local 2 // io.netty.channel.ChannelPromise promise
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2  promise  Lio/netty/channel/ChannelPromise;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      ctx      
      promise  

  public void close(io.netty.channel.ChannelHandlerContext, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.channel.ChannelPromise promise
         0: .line 146
            aload 1 /* ctx */
            aload 2 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:(Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
         1: .line 147
            return
        end local 2 // io.netty.channel.ChannelPromise promise
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2  promise  Lio/netty/channel/ChannelPromise;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      ctx      
      promise  

  public void deregister(io.netty.channel.ChannelHandlerContext, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.channel.ChannelPromise promise
         0: .line 151
            aload 1 /* ctx */
            aload 2 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.deregister:(Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
         1: .line 152
            return
        end local 2 // io.netty.channel.ChannelPromise promise
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2  promise  Lio/netty/channel/ChannelPromise;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      ctx      
      promise  

  public void read(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.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 156
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.read:()Lio/netty/channel/ChannelHandlerContext;
            pop
         1: .line 157
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws 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=4, locals=4, args_size=4
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler 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 162
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.HttpRequest
            ifne 3
         1: .line 163
            aload 1 /* ctx */
            aload 2 /* msg */
            aload 3 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
         2: .line 164
            return
         3: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeRequested:Z
            ifeq 8
         4: .line 168
            aload 3 /* promise */
            new java.lang.IllegalStateException
            dup
         5: .line 169
            ldc "Attempting to write HTTP request with upgrade in progress"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
         6: .line 168
            invokeinterface io.netty.channel.ChannelPromise.setFailure:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPromise;
            pop
         7: .line 170
            return
         8: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeRequested:Z
         9: .line 174
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.HttpRequest
            invokevirtual io.netty.handler.codec.http.HttpClientUpgradeHandler.setUpgradeRequestHeaders:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/HttpRequest;)V
        10: .line 177
            aload 1 /* ctx */
            aload 2 /* msg */
            aload 3 /* promise */
            invokeinterface io.netty.channel.ChannelHandlerContext.write:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            pop
        11: .line 180
            aload 1 /* ctx */
            getstatic io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeEvent.UPGRADE_ISSUED:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeEvent;
            invokeinterface io.netty.channel.ChannelHandlerContext.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
        12: .line 182
            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.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0   13     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0   13     2      msg  Ljava/lang/Object;
            0   13     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=1, locals=2, args_size=2
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 186
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.flush:()Lio/netty/channel/ChannelHandlerContext;
            pop
         1: .line 187
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  protected void decode(io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.http.HttpObject, java.util.List<java.lang.Object>);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/HttpObject;Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.handler.codec.http.HttpObject msg
        start local 3 // java.util.List out
         0: .line 192
            aconst_null
            astore 4 /* response */
        start local 4 // io.netty.handler.codec.http.FullHttpResponse response
         1: .line 194
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeRequested:Z
            ifne 3
         2: .line 195
            new java.lang.IllegalStateException
            dup
            ldc "Read HTTP response without requesting protocol switch"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 198
      StackMap locals: io.netty.handler.codec.http.FullHttpResponse
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.HttpResponse
            ifeq 10
         4: .line 199
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.HttpResponse
            astore 5 /* rep */
        start local 5 // io.netty.handler.codec.http.HttpResponse rep
         5: .line 200
            getstatic io.netty.handler.codec.http.HttpResponseStatus.SWITCHING_PROTOCOLS:Lio/netty/handler/codec/http/HttpResponseStatus;
            aload 5 /* rep */
            invokeinterface io.netty.handler.codec.http.HttpResponse.status:()Lio/netty/handler/codec/http/HttpResponseStatus;
            invokevirtual io.netty.handler.codec.http.HttpResponseStatus.equals:(Ljava/lang/Object;)Z
            ifne 10
         6: .line 205
            aload 1 /* ctx */
            getstatic io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeEvent.UPGRADE_REJECTED:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeEvent;
            invokeinterface io.netty.channel.ChannelHandlerContext.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
         7: .line 206
            aload 1 /* ctx */
            invokestatic io.netty.handler.codec.http.HttpClientUpgradeHandler.removeThisHandler:(Lio/netty/channel/ChannelHandlerContext;)V
         8: .line 207
            aload 1 /* ctx */
            aload 2 /* msg */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
         9: .line 208
            return
        end local 5 // io.netty.handler.codec.http.HttpResponse rep
        10: .line 212
      StackMap locals:
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.FullHttpResponse
            ifeq 15
        11: .line 213
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.FullHttpResponse
            astore 4 /* response */
        12: .line 215
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.retain:()Lio/netty/handler/codec/http/FullHttpResponse;
            pop
        13: .line 216
            aload 3 /* out */
            aload 4 /* response */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        14: .line 217
            goto 20
        15: .line 219
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* msg */
            aload 3 /* out */
            invokespecial io.netty.handler.codec.http.HttpObjectAggregator.decode:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Ljava/util/List;)V
        16: .line 220
            aload 3 /* out */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 18
        17: .line 222
            return
        18: .line 225
      StackMap locals:
      StackMap stack:
            getstatic io.netty.handler.codec.http.HttpClientUpgradeHandler.$assertionsDisabled:Z
            ifne 19
            aload 3 /* out */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpeq 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        19: .line 226
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast io.netty.handler.codec.http.FullHttpResponse
            astore 4 /* response */
        20: .line 229
      StackMap locals:
      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.UPGRADE:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 5 /* upgradeHeader */
        start local 5 // java.lang.CharSequence upgradeHeader
        21: .line 230
            aload 5 /* upgradeHeader */
            ifnull 25
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
            invokeinterface io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec.protocol:()Ljava/lang/CharSequence;
            aload 5 /* upgradeHeader */
            invokestatic io.netty.util.AsciiString.contentEqualsIgnoreCase:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
            ifne 25
        22: .line 231
            new java.lang.IllegalStateException
            dup
        23: .line 232
            new java.lang.StringBuilder
            dup
            ldc "Switching Protocols response with unexpected UPGRADE protocol: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* upgradeHeader */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 231
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 236
      StackMap locals: java.lang.CharSequence
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.sourceCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$SourceCodec;
            aload 1 /* ctx */
            invokeinterface io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec.prepareUpgradeFrom:(Lio/netty/channel/ChannelHandlerContext;)V
        26: .line 237
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
            aload 1 /* ctx */
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec.upgradeTo:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/FullHttpResponse;)V
        27: .line 240
            aload 1 /* ctx */
            getstatic io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeEvent.UPGRADE_SUCCESSFUL:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeEvent;
            invokeinterface io.netty.channel.ChannelHandlerContext.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
        28: .line 244
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.sourceCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$SourceCodec;
            aload 1 /* ctx */
            invokeinterface io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec.upgradeFrom:(Lio/netty/channel/ChannelHandlerContext;)V
        29: .line 248
            aload 4 /* response */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.release:()Z
            pop
        30: .line 249
            aload 3 /* out */
            invokeinterface java.util.List.clear:()V
        31: .line 250
            aload 1 /* ctx */
            invokestatic io.netty.handler.codec.http.HttpClientUpgradeHandler.removeThisHandler:(Lio/netty/channel/ChannelHandlerContext;)V
        end local 5 // java.lang.CharSequence upgradeHeader
        32: .line 251
            goto 37
      StackMap locals: io.netty.handler.codec.http.HttpClientUpgradeHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.HttpObject java.util.List io.netty.handler.codec.http.FullHttpResponse
      StackMap stack: java.lang.Throwable
        33: astore 5 /* t */
        start local 5 // java.lang.Throwable t
        34: .line 252
            aload 4 /* response */
            invokestatic io.netty.util.ReferenceCountUtil.release:(Ljava/lang/Object;)Z
            pop
        35: .line 253
            aload 1 /* ctx */
            aload 5 /* t */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelHandlerContext;
            pop
        36: .line 254
            aload 1 /* ctx */
            invokestatic io.netty.handler.codec.http.HttpClientUpgradeHandler.removeThisHandler:(Lio/netty/channel/ChannelHandlerContext;)V
        end local 5 // java.lang.Throwable t
        37: .line 256
      StackMap locals:
      StackMap stack:
            return
        end local 4 // io.netty.handler.codec.http.FullHttpResponse response
        end local 3 // java.util.List out
        end local 2 // io.netty.handler.codec.http.HttpObject msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   38     0           this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0   38     1            ctx  Lio/netty/channel/ChannelHandlerContext;
            0   38     2            msg  Lio/netty/handler/codec/http/HttpObject;
            0   38     3            out  Ljava/util/List<Ljava/lang/Object;>;
            1   38     4       response  Lio/netty/handler/codec/http/FullHttpResponse;
            5   10     5            rep  Lio/netty/handler/codec/http/HttpResponse;
           21   32     5  upgradeHeader  Ljava/lang/CharSequence;
           34   37     5              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     9      33  Class java.lang.Throwable
          10    17      33  Class java.lang.Throwable
          18    32      33  Class java.lang.Throwable
    Exceptions:
      throws java.lang.Exception
    Signature: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/HttpObject;Ljava/util/List<Ljava/lang/Object;>;)V
    MethodParameters:
      Name  Flags
      ctx   
      msg   
      out   

  private static void removeThisHandler(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 259
            aload 0 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 0 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.name:()Ljava/lang/String;
            invokeinterface io.netty.channel.ChannelPipeline.remove:(Ljava/lang/String;)Lio/netty/channel/ChannelHandler;
            pop
         1: .line 260
            return
        end local 0 // io.netty.channel.ChannelHandlerContext ctx
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   ctx  Lio/netty/channel/ChannelHandlerContext;
    MethodParameters:
      Name  Flags
      ctx   

  private void setUpgradeRequestHeaders(io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.http.HttpRequest);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/HttpRequest;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.handler.codec.http.HttpRequest request
         0: .line 267
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.UPGRADE:Lio/netty/util/AsciiString;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
            invokeinterface io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec.protocol:()Ljava/lang/CharSequence;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.set:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         1: .line 270
            new java.util.LinkedHashSet
            dup
            iconst_2
            invokespecial java.util.LinkedHashSet.<init>:(I)V
            astore 3 /* connectionParts */
        start local 3 // java.util.Set connectionParts
         2: .line 271
            aload 3 /* connectionParts */
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpClientUpgradeHandler.upgradeCodec:Lio/netty/handler/codec/http/HttpClientUpgradeHandler$UpgradeCodec;
            aload 1 /* ctx */
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec.setUpgradeHeaders:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/HttpRequest;)Ljava/util/Collection;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
         3: .line 274
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 4 /* builder */
        start local 4 // java.lang.StringBuilder builder
         4: .line 275
            aload 3 /* connectionParts */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 8
      StackMap locals: io.netty.handler.codec.http.HttpClientUpgradeHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.HttpRequest java.util.Set java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         5: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 5 /* part */
        start local 5 // java.lang.CharSequence part
         6: .line 276
            aload 4 /* builder */
            aload 5 /* part */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
         7: .line 277
            aload 4 /* builder */
            bipush 44
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.lang.CharSequence part
         8: .line 275
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         9: .line 279
            aload 4 /* builder */
            getstatic io.netty.handler.codec.http.HttpHeaderValues.UPGRADE:Lio/netty/util/AsciiString;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
            pop
        10: .line 280
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.HttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.CONNECTION:Lio/netty/util/AsciiString;
            aload 4 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        11: .line 281
            return
        end local 4 // java.lang.StringBuilder builder
        end local 3 // java.util.Set connectionParts
        end local 2 // io.netty.handler.codec.http.HttpRequest request
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpClientUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lio/netty/handler/codec/http/HttpClientUpgradeHandler;
            0   12     1              ctx  Lio/netty/channel/ChannelHandlerContext;
            0   12     2          request  Lio/netty/handler/codec/http/HttpRequest;
            2   12     3  connectionParts  Ljava/util/Set<Ljava/lang/CharSequence;>;
            4   12     4          builder  Ljava/lang/StringBuilder;
            6    8     5             part  Ljava/lang/CharSequence;
    MethodParameters:
         Name  Flags
      ctx      
      request  

  protected void decode(io.netty.channel.ChannelHandlerContext, java.lang.Object, java.util.List);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Ljava/util/List;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast io.netty.handler.codec.http.HttpObject
            aload 3
            invokevirtual io.netty.handler.codec.http.HttpClientUpgradeHandler.decode:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/HttpObject;Ljava/util/List;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
SourceFile: "HttpClientUpgradeHandler.java"
NestMembers:
  io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec  io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec  io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeEvent
InnerClasses:
  public abstract SourceCodec = io.netty.handler.codec.http.HttpClientUpgradeHandler$SourceCodec of io.netty.handler.codec.http.HttpClientUpgradeHandler
  public abstract UpgradeCodec = io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeCodec of io.netty.handler.codec.http.HttpClientUpgradeHandler
  public final UpgradeEvent = io.netty.handler.codec.http.HttpClientUpgradeHandler$UpgradeEvent of io.netty.handler.codec.http.HttpClientUpgradeHandler