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

  private final io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory upgradeCodecFactory;
    descriptor: Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  public void <init>(io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec, io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory);
    descriptor: (Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler this
        start local 1 // io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec sourceCodec
        start local 2 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory upgradeCodecFactory
         0: .line 189
            aload 0 /* this */
            aload 1 /* sourceCodec */
            aload 2 /* upgradeCodecFactory */
            iconst_0
            invokespecial io.netty.handler.codec.http.HttpServerUpgradeHandler.<init>:(Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;I)V
         1: .line 190
            return
        end local 2 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory upgradeCodecFactory
        end local 1 // io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec sourceCodec
        end local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lio/netty/handler/codec/http/HttpServerUpgradeHandler;
            0    2     1          sourceCodec  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;
            0    2     2  upgradeCodecFactory  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;
    MethodParameters:
                     Name  Flags
      sourceCodec          
      upgradeCodecFactory  

  public void <init>(io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec, io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory, int);
    descriptor: (Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler this
        start local 1 // io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec sourceCodec
        start local 2 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory upgradeCodecFactory
        start local 3 // int maxContentLength
         0: .line 202
            aload 0 /* this */
            iload 3 /* maxContentLength */
            invokespecial io.netty.handler.codec.http.HttpObjectAggregator.<init>:(I)V
         1: .line 204
            aload 0 /* this */
            aload 1 /* sourceCodec */
            ldc "sourceCodec"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec
            putfield io.netty.handler.codec.http.HttpServerUpgradeHandler.sourceCodec:Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;
         2: .line 205
            aload 0 /* this */
            aload 2 /* upgradeCodecFactory */
            ldc "upgradeCodecFactory"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory
            putfield io.netty.handler.codec.http.HttpServerUpgradeHandler.upgradeCodecFactory:Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;
         3: .line 206
            return
        end local 3 // int maxContentLength
        end local 2 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory upgradeCodecFactory
        end local 1 // io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec sourceCodec
        end local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lio/netty/handler/codec/http/HttpServerUpgradeHandler;
            0    4     1          sourceCodec  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;
            0    4     2  upgradeCodecFactory  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;
            0    4     3     maxContentLength  I
    MethodParameters:
                     Name  Flags
      sourceCodec          
      upgradeCodecFactory  
      maxContentLength     

  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=4, locals=5, args_size=4
        start local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler 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 212
            aload 0 /* this */
            dup
            getfield io.netty.handler.codec.http.HttpServerUpgradeHandler.handlingUpgrade:Z
            aload 2 /* msg */
            invokestatic io.netty.handler.codec.http.HttpServerUpgradeHandler.isUpgradeRequest:(Lio/netty/handler/codec/http/HttpObject;)Z
            ior
            putfield io.netty.handler.codec.http.HttpServerUpgradeHandler.handlingUpgrade:Z
         1: .line 213
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpServerUpgradeHandler.handlingUpgrade:Z
            ifne 5
         2: .line 215
            aload 2 /* msg */
            invokestatic io.netty.util.ReferenceCountUtil.retain:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 216
            aload 3 /* out */
            aload 2 /* msg */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 217
            return
         5: .line 221
      StackMap locals:
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.FullHttpRequest
            ifeq 10
         6: .line 222
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.FullHttpRequest
            astore 4 /* fullRequest */
        start local 4 // io.netty.handler.codec.http.FullHttpRequest fullRequest
         7: .line 223
            aload 2 /* msg */
            invokestatic io.netty.util.ReferenceCountUtil.retain:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 224
            aload 3 /* out */
            aload 2 /* msg */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 225
            goto 16
        end local 4 // io.netty.handler.codec.http.FullHttpRequest fullRequest
        10: .line 227
      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
        11: .line 228
            aload 3 /* out */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 13
        12: .line 230
            return
        13: .line 234
      StackMap locals:
      StackMap stack:
            getstatic io.netty.handler.codec.http.HttpServerUpgradeHandler.$assertionsDisabled:Z
            ifne 14
            aload 3 /* out */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpeq 14
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        14: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield io.netty.handler.codec.http.HttpServerUpgradeHandler.handlingUpgrade:Z
        15: .line 236
            aload 3 /* out */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast io.netty.handler.codec.http.FullHttpRequest
            astore 4 /* fullRequest */
        start local 4 // io.netty.handler.codec.http.FullHttpRequest fullRequest
        16: .line 239
      StackMap locals: io.netty.handler.codec.http.FullHttpRequest
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 4 /* fullRequest */
            invokevirtual io.netty.handler.codec.http.HttpServerUpgradeHandler.upgrade:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/FullHttpRequest;)Z
            ifeq 18
        17: .line 243
            aload 3 /* out */
            invokeinterface java.util.List.clear:()V
        18: .line 248
      StackMap locals:
      StackMap stack:
            return
        end local 4 // io.netty.handler.codec.http.FullHttpRequest fullRequest
        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.HttpServerUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Lio/netty/handler/codec/http/HttpServerUpgradeHandler;
            0   19     1          ctx  Lio/netty/channel/ChannelHandlerContext;
            0   19     2          msg  Lio/netty/handler/codec/http/HttpObject;
            0   19     3          out  Ljava/util/List<Ljava/lang/Object;>;
            7   10     4  fullRequest  Lio/netty/handler/codec/http/FullHttpRequest;
           16   19     4  fullRequest  Lio/netty/handler/codec/http/FullHttpRequest;
    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 boolean isUpgradeRequest(io.netty.handler.codec.http.HttpObject);
    descriptor: (Lio/netty/handler/codec/http/HttpObject;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.codec.http.HttpObject msg
         0: .line 254
            aload 0 /* msg */
            instanceof io.netty.handler.codec.http.HttpRequest
            ifeq 1
            aload 0 /* msg */
            checkcast io.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.UPGRADE:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.netty.handler.codec.http.HttpObject msg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   msg  Lio/netty/handler/codec/http/HttpObject;
    MethodParameters:
      Name  Flags
      msg   

  private boolean upgrade(io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.http.FullHttpRequest);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/FullHttpRequest;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=14, args_size=3
        start local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.handler.codec.http.FullHttpRequest request
         0: .line 267
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.FullHttpRequest.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;
            invokestatic io.netty.handler.codec.http.HttpServerUpgradeHandler.splitHeader:(Ljava/lang/CharSequence;)Ljava/util/List;
            astore 3 /* requestedProtocols */
        start local 3 // java.util.List requestedProtocols
         1: .line 268
            aload 3 /* requestedProtocols */
            invokeinterface java.util.List.size:()I
            istore 4 /* numRequestedProtocols */
        start local 4 // int numRequestedProtocols
         2: .line 269
            aconst_null
            astore 5 /* upgradeCodec */
        start local 5 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec upgradeCodec
         3: .line 270
            aconst_null
            astore 6 /* upgradeProtocol */
        start local 6 // java.lang.CharSequence upgradeProtocol
         4: .line 271
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         5: goto 13
         6: .line 272
      StackMap locals: io.netty.handler.codec.http.HttpServerUpgradeHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.FullHttpRequest java.util.List int io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec java.lang.CharSequence int
      StackMap stack:
            aload 3 /* requestedProtocols */
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 8 /* p */
        start local 8 // java.lang.CharSequence p
         7: .line 273
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpServerUpgradeHandler.upgradeCodecFactory:Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodecFactory;
            aload 8 /* p */
            invokeinterface io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory.newUpgradeCodec:(Ljava/lang/CharSequence;)Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodec;
            astore 9 /* c */
        start local 9 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec c
         8: .line 274
            aload 9 /* c */
            ifnull 12
         9: .line 275
            aload 8 /* p */
            astore 6 /* upgradeProtocol */
        10: .line 276
            aload 9 /* c */
            astore 5 /* upgradeCodec */
        11: .line 277
            goto 14
        end local 9 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec c
        end local 8 // java.lang.CharSequence p
        12: .line 271
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 7 /* i */
            iload 4 /* numRequestedProtocols */
            if_icmplt 6
        end local 7 // int i
        14: .line 281
      StackMap locals:
      StackMap stack:
            aload 5 /* upgradeCodec */
            ifnonnull 16
        15: .line 283
            iconst_0
            ireturn
        16: .line 287
      StackMap locals:
      StackMap stack:
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.FullHttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.CONNECTION:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 7 /* connectionHeader */
        start local 7 // java.lang.CharSequence connectionHeader
        17: .line 288
            aload 7 /* connectionHeader */
            ifnonnull 19
        18: .line 289
            iconst_0
            ireturn
        19: .line 293
      StackMap locals: java.lang.CharSequence
      StackMap stack:
            aload 5 /* upgradeCodec */
            invokeinterface io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec.requiredUpgradeHeaders:()Ljava/util/Collection;
            astore 8 /* requiredHeaders */
        start local 8 // java.util.Collection requiredHeaders
        20: .line 294
            aload 7 /* connectionHeader */
            invokestatic io.netty.handler.codec.http.HttpServerUpgradeHandler.splitHeader:(Ljava/lang/CharSequence;)Ljava/util/List;
            astore 9 /* values */
        start local 9 // java.util.List values
        21: .line 295
            aload 9 /* values */
            getstatic io.netty.handler.codec.http.HttpHeaderNames.UPGRADE:Lio/netty/util/AsciiString;
            invokestatic io.netty.util.AsciiString.containsContentEqualsIgnoreCase:(Ljava/util/Collection;Ljava/lang/CharSequence;)Z
            ifeq 23
        22: .line 296
            aload 9 /* values */
            aload 8 /* requiredHeaders */
            invokestatic io.netty.util.AsciiString.containsAllContentEqualsIgnoreCase:(Ljava/util/Collection;Ljava/util/Collection;)Z
            ifne 24
        23: .line 297
      StackMap locals: java.util.Collection java.util.List
      StackMap stack:
            iconst_0
            ireturn
        24: .line 301
      StackMap locals:
      StackMap stack:
            aload 8 /* requiredHeaders */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 11
            goto 28
      StackMap locals: io.netty.handler.codec.http.HttpServerUpgradeHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.FullHttpRequest java.util.List int io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec java.lang.CharSequence java.lang.CharSequence java.util.Collection java.util.List top java.util.Iterator
      StackMap stack:
        25: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.CharSequence
            astore 10 /* requiredHeader */
        start local 10 // java.lang.CharSequence requiredHeader
        26: .line 302
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.FullHttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            aload 10 /* requiredHeader */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.contains:(Ljava/lang/CharSequence;)Z
            ifne 28
        27: .line 303
            iconst_0
            ireturn
        end local 10 // java.lang.CharSequence requiredHeader
        28: .line 301
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        29: .line 309
            aload 6 /* upgradeProtocol */
            invokestatic io.netty.handler.codec.http.HttpServerUpgradeHandler.createUpgradeResponse:(Ljava/lang/CharSequence;)Lio/netty/handler/codec/http/FullHttpResponse;
            astore 10 /* upgradeResponse */
        start local 10 // io.netty.handler.codec.http.FullHttpResponse upgradeResponse
        30: .line 310
            aload 5 /* upgradeCodec */
            aload 1 /* ctx */
            aload 2 /* request */
            aload 10 /* upgradeResponse */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            invokeinterface io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec.prepareUpgradeResponse:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/FullHttpRequest;Lio/netty/handler/codec/http/HttpHeaders;)Z
            ifne 32
        31: .line 311
            iconst_0
            ireturn
        32: .line 315
      StackMap locals: io.netty.handler.codec.http.HttpServerUpgradeHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.FullHttpRequest java.util.List int io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec java.lang.CharSequence java.lang.CharSequence java.util.Collection java.util.List io.netty.handler.codec.http.FullHttpResponse
      StackMap stack:
            new io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent
            dup
            aload 6 /* upgradeProtocol */
            aload 2 /* request */
            invokespecial io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent.<init>:(Ljava/lang/CharSequence;Lio/netty/handler/codec/http/FullHttpRequest;)V
            astore 11 /* event */
        start local 11 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent event
        33: .line 322
            aload 1 /* ctx */
            aload 10 /* upgradeResponse */
            invokeinterface io.netty.channel.ChannelHandlerContext.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            astore 12 /* writeComplete */
        start local 12 // io.netty.channel.ChannelFuture writeComplete
        34: .line 324
            aload 0 /* this */
            getfield io.netty.handler.codec.http.HttpServerUpgradeHandler.sourceCodec:Lio/netty/handler/codec/http/HttpServerUpgradeHandler$SourceCodec;
            aload 1 /* ctx */
            invokeinterface io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec.upgradeFrom:(Lio/netty/channel/ChannelHandlerContext;)V
        35: .line 325
            aload 5 /* upgradeCodec */
            aload 1 /* ctx */
            aload 2 /* request */
            invokeinterface io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec.upgradeTo:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/FullHttpRequest;)V
        36: .line 328
            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
        37: .line 332
            aload 1 /* ctx */
            aload 11 /* event */
            invokevirtual io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent.retain:()Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeEvent;
            invokeinterface io.netty.channel.ChannelHandlerContext.fireUserEventTriggered:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
        38: .line 337
            aload 12 /* writeComplete */
            getstatic io.netty.channel.ChannelFutureListener.CLOSE_ON_FAILURE:Lio/netty/channel/ChannelFutureListener;
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
        end local 12 // io.netty.channel.ChannelFuture writeComplete
        39: .line 338
            goto 43
      StackMap locals: io.netty.handler.codec.http.HttpServerUpgradeHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.FullHttpRequest java.util.List int io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec java.lang.CharSequence java.lang.CharSequence java.util.Collection java.util.List io.netty.handler.codec.http.FullHttpResponse io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent
      StackMap stack: java.lang.Throwable
        40: astore 13
        41: .line 340
            aload 11 /* event */
            invokevirtual io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent.release:()Z
            pop
        42: .line 341
            aload 13
            athrow
        43: .line 340
      StackMap locals:
      StackMap stack:
            aload 11 /* event */
            invokevirtual io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent.release:()Z
            pop
        44: .line 342
            iconst_1
            ireturn
        end local 11 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent event
        end local 10 // io.netty.handler.codec.http.FullHttpResponse upgradeResponse
        end local 9 // java.util.List values
        end local 8 // java.util.Collection requiredHeaders
        end local 7 // java.lang.CharSequence connectionHeader
        end local 6 // java.lang.CharSequence upgradeProtocol
        end local 5 // io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec upgradeCodec
        end local 4 // int numRequestedProtocols
        end local 3 // java.util.List requestedProtocols
        end local 2 // io.netty.handler.codec.http.FullHttpRequest request
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.http.HttpServerUpgradeHandler this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   45     0                   this  Lio/netty/handler/codec/http/HttpServerUpgradeHandler;
            0   45     1                    ctx  Lio/netty/channel/ChannelHandlerContext;
            0   45     2                request  Lio/netty/handler/codec/http/FullHttpRequest;
            1   45     3     requestedProtocols  Ljava/util/List<Ljava/lang/CharSequence;>;
            2   45     4  numRequestedProtocols  I
            3   45     5           upgradeCodec  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodec;
            4   45     6        upgradeProtocol  Ljava/lang/CharSequence;
            5   14     7                      i  I
            7   12     8                      p  Ljava/lang/CharSequence;
            8   12     9                      c  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeCodec;
           17   45     7       connectionHeader  Ljava/lang/CharSequence;
           20   45     8        requiredHeaders  Ljava/util/Collection<Ljava/lang/CharSequence;>;
           21   45     9                 values  Ljava/util/List<Ljava/lang/CharSequence;>;
           26   28    10         requiredHeader  Ljava/lang/CharSequence;
           30   45    10        upgradeResponse  Lio/netty/handler/codec/http/FullHttpResponse;
           33   45    11                  event  Lio/netty/handler/codec/http/HttpServerUpgradeHandler$UpgradeEvent;
           34   39    12          writeComplete  Lio/netty/channel/ChannelFuture;
      Exception table:
        from    to  target  type
          33    40      40  any
    MethodParameters:
         Name  Flags
      ctx      final
      request  final

  private static io.netty.handler.codec.http.FullHttpResponse createUpgradeResponse(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Lio/netty/handler/codec/http/FullHttpResponse;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // java.lang.CharSequence upgradeProtocol
         0: .line 349
            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.SWITCHING_PROTOCOLS:Lio/netty/handler/codec/http/HttpResponseStatus;
         1: .line 350
            getstatic io.netty.buffer.Unpooled.EMPTY_BUFFER:Lio/netty/buffer/ByteBuf;
            iconst_0
         2: .line 349
            invokespecial io.netty.handler.codec.http.DefaultFullHttpResponse.<init>:(Lio/netty/handler/codec/http/HttpVersion;Lio/netty/handler/codec/http/HttpResponseStatus;Lio/netty/buffer/ByteBuf;Z)V
            astore 1 /* res */
        start local 1 // io.netty.handler.codec.http.DefaultFullHttpResponse res
         3: .line 351
            aload 1 /* res */
            invokevirtual io.netty.handler.codec.http.DefaultFullHttpResponse.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.UPGRADE:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         4: .line 352
            aload 1 /* res */
            invokevirtual io.netty.handler.codec.http.DefaultFullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.UPGRADE:Lio/netty/util/AsciiString;
            aload 0 /* upgradeProtocol */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         5: .line 353
            aload 1 /* res */
            areturn
        end local 1 // io.netty.handler.codec.http.DefaultFullHttpResponse res
        end local 0 // java.lang.CharSequence upgradeProtocol
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0  upgradeProtocol  Ljava/lang/CharSequence;
            3    6     1              res  Lio/netty/handler/codec/http/DefaultFullHttpResponse;
    MethodParameters:
                 Name  Flags
      upgradeProtocol  

  private static java.util.List<java.lang.CharSequence> splitHeader(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.CharSequence header
         0: .line 361
            new java.lang.StringBuilder
            dup
            aload 0 /* header */
            invokeinterface java.lang.CharSequence.length:()I
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 1 /* builder */
        start local 1 // java.lang.StringBuilder builder
         1: .line 362
            new java.util.ArrayList
            dup
            iconst_4
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* protocols */
        start local 2 // java.util.List protocols
         2: .line 363
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 13
         4: .line 364
      StackMap locals: java.lang.StringBuilder java.util.List int
      StackMap stack:
            aload 0 /* header */
            iload 3 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            istore 4 /* c */
        start local 4 // char c
         5: .line 365
            iload 4 /* c */
            invokestatic java.lang.Character.isWhitespace:(C)Z
            ifeq 7
         6: .line 367
            goto 12
         7: .line 369
      StackMap locals: int
      StackMap stack:
            iload 4 /* c */
            bipush 44
            if_icmpne 11
         8: .line 371
            aload 2 /* protocols */
            aload 1 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 372
            aload 1 /* builder */
            iconst_0
            invokevirtual java.lang.StringBuilder.setLength:(I)V
        10: .line 373
            goto 12
        11: .line 374
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            iload 4 /* c */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 4 // char c
        12: .line 363
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 3 /* i */
            aload 0 /* header */
            invokeinterface java.lang.CharSequence.length:()I
            if_icmplt 4
        end local 3 // int i
        14: .line 379
            aload 1 /* builder */
            invokevirtual java.lang.StringBuilder.length:()I
            ifle 16
        15: .line 380
            aload 2 /* protocols */
            aload 1 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 383
      StackMap locals:
      StackMap stack:
            aload 2 /* protocols */
            areturn
        end local 2 // java.util.List protocols
        end local 1 // java.lang.StringBuilder builder
        end local 0 // java.lang.CharSequence header
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0     header  Ljava/lang/CharSequence;
            1   17     1    builder  Ljava/lang/StringBuilder;
            2   17     2  protocols  Ljava/util/List<Ljava/lang/CharSequence;>;
            3   14     3          i  I
            5   12     4          c  C
    Signature: (Ljava/lang/CharSequence;)Ljava/util/List<Ljava/lang/CharSequence;>;
    MethodParameters:
        Name  Flags
      header  

  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.HttpServerUpgradeHandler.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: "HttpServerUpgradeHandler.java"
NestMembers:
  io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec  io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec  io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory  io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent
InnerClasses:
  public abstract SourceCodec = io.netty.handler.codec.http.HttpServerUpgradeHandler$SourceCodec of io.netty.handler.codec.http.HttpServerUpgradeHandler
  public abstract UpgradeCodec = io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodec of io.netty.handler.codec.http.HttpServerUpgradeHandler
  public abstract UpgradeCodecFactory = io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeCodecFactory of io.netty.handler.codec.http.HttpServerUpgradeHandler
  public final UpgradeEvent = io.netty.handler.codec.http.HttpServerUpgradeHandler$UpgradeEvent of io.netty.handler.codec.http.HttpServerUpgradeHandler