public class io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 extends io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08
  super_class: io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker
{
  public static final java.lang.String WEBSOCKET_08_ACCEPT_GUID;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"

  private final boolean allowExtensions;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean allowMaskMismatch;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(java.lang.String, java.lang.String, boolean, int);
    descriptor: (Ljava/lang/String;Ljava/lang/String;ZI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
        start local 1 // java.lang.String webSocketURL
        start local 2 // java.lang.String subprotocols
        start local 3 // boolean allowExtensions
        start local 4 // int maxFramePayloadLength
         0: .line 59
            aload 0 /* this */
            aload 1 /* webSocketURL */
            aload 2 /* subprotocols */
            iload 3 /* allowExtensions */
            iload 4 /* maxFramePayloadLength */
            iconst_0
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.<init>:(Ljava/lang/String;Ljava/lang/String;ZIZ)V
         1: .line 60
            return
        end local 4 // int maxFramePayloadLength
        end local 3 // boolean allowExtensions
        end local 2 // java.lang.String subprotocols
        end local 1 // java.lang.String webSocketURL
        end local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    2     0                   this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08;
            0    2     1           webSocketURL  Ljava/lang/String;
            0    2     2           subprotocols  Ljava/lang/String;
            0    2     3        allowExtensions  Z
            0    2     4  maxFramePayloadLength  I
    MethodParameters:
                       Name  Flags
      webSocketURL           
      subprotocols           
      allowExtensions        
      maxFramePayloadLength  

  public void <init>(java.lang.String, java.lang.String, boolean, int, boolean);
    descriptor: (Ljava/lang/String;Ljava/lang/String;ZIZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
        start local 1 // java.lang.String webSocketURL
        start local 2 // java.lang.String subprotocols
        start local 3 // boolean allowExtensions
        start local 4 // int maxFramePayloadLength
        start local 5 // boolean allowMaskMismatch
         0: .line 82
            aload 0 /* this */
            getstatic io.netty.handler.codec.http.websocketx.WebSocketVersion.V08:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            aload 1 /* webSocketURL */
            aload 2 /* subprotocols */
            iload 4 /* maxFramePayloadLength */
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker.<init>:(Lio/netty/handler/codec/http/websocketx/WebSocketVersion;Ljava/lang/String;Ljava/lang/String;I)V
         1: .line 83
            aload 0 /* this */
            iload 3 /* allowExtensions */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.allowExtensions:Z
         2: .line 84
            aload 0 /* this */
            iload 5 /* allowMaskMismatch */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.allowMaskMismatch:Z
         3: .line 85
            return
        end local 5 // boolean allowMaskMismatch
        end local 4 // int maxFramePayloadLength
        end local 3 // boolean allowExtensions
        end local 2 // java.lang.String subprotocols
        end local 1 // java.lang.String webSocketURL
        end local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    4     0                   this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08;
            0    4     1           webSocketURL  Ljava/lang/String;
            0    4     2           subprotocols  Ljava/lang/String;
            0    4     3        allowExtensions  Z
            0    4     4  maxFramePayloadLength  I
            0    4     5      allowMaskMismatch  Z
    MethodParameters:
                       Name  Flags
      webSocketURL           
      subprotocols           
      allowExtensions        
      maxFramePayloadLength  
      allowMaskMismatch      

  protected io.netty.handler.codec.http.FullHttpResponse newHandshakeResponse(io.netty.handler.codec.http.FullHttpRequest, io.netty.handler.codec.http.HttpHeaders);
    descriptor: (Lio/netty/handler/codec/http/FullHttpRequest;Lio/netty/handler/codec/http/HttpHeaders;)Lio/netty/handler/codec/http/FullHttpResponse;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
        start local 1 // io.netty.handler.codec.http.FullHttpRequest req
        start local 2 // io.netty.handler.codec.http.HttpHeaders headers
         0: .line 123
            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;
            invokespecial io.netty.handler.codec.http.DefaultFullHttpResponse.<init>:(Lio/netty/handler/codec/http/HttpVersion;Lio/netty/handler/codec/http/HttpResponseStatus;)V
            astore 3 /* res */
        start local 3 // io.netty.handler.codec.http.FullHttpResponse res
         1: .line 125
            aload 2 /* headers */
            ifnull 3
         2: .line 126
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            aload 2 /* headers */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Lio/netty/handler/codec/http/HttpHeaders;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         3: .line 129
      StackMap locals: io.netty.handler.codec.http.FullHttpResponse
      StackMap stack:
            aload 1 /* req */
            invokeinterface io.netty.handler.codec.http.FullHttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SEC_WEBSOCKET_KEY:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 4 /* key */
        start local 4 // java.lang.CharSequence key
         4: .line 130
            aload 4 /* key */
            ifnonnull 6
         5: .line 131
            new io.netty.handler.codec.http.websocketx.WebSocketHandshakeException
            dup
            ldc "not a WebSocket request: missing key"
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketHandshakeException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 133
      StackMap locals: java.lang.CharSequence
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 4 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* acceptSeed */
        start local 5 // java.lang.String acceptSeed
         7: .line 134
            aload 5 /* acceptSeed */
            getstatic io.netty.util.CharsetUtil.US_ASCII:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            invokestatic io.netty.handler.codec.http.websocketx.WebSocketUtil.sha1:([B)[B
            astore 6 /* sha1 */
        start local 6 // byte[] sha1
         8: .line 135
            aload 6 /* sha1 */
            invokestatic io.netty.handler.codec.http.websocketx.WebSocketUtil.base64:([B)Ljava/lang/String;
            astore 7 /* accept */
        start local 7 // java.lang.String accept
         9: .line 137
            getstatic io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 11
        10: .line 138
            getstatic io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "WebSocket version 08 server handshake key: {}, response: {}"
            aload 4 /* key */
            aload 7 /* accept */
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 141
      StackMap locals: java.lang.String byte[] java.lang.String
      StackMap stack:
            aload 3 /* res */
            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;
            getstatic io.netty.handler.codec.http.HttpHeaderValues.WEBSOCKET: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
        12: .line 142
            aload 3 /* res */
            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.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
        13: .line 143
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SEC_WEBSOCKET_ACCEPT:Lio/netty/util/AsciiString;
            aload 7 /* accept */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        14: .line 145
            aload 1 /* req */
            invokeinterface io.netty.handler.codec.http.FullHttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SEC_WEBSOCKET_PROTOCOL:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 8 /* subprotocols */
        start local 8 // java.lang.String subprotocols
        15: .line 146
            aload 8 /* subprotocols */
            ifnull 22
        16: .line 147
            aload 0 /* this */
            aload 8 /* subprotocols */
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.selectSubprotocol:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* selectedSubprotocol */
        start local 9 // java.lang.String selectedSubprotocol
        17: .line 148
            aload 9 /* selectedSubprotocol */
            ifnonnull 21
        18: .line 149
            getstatic io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 22
        19: .line 150
            getstatic io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Requested subprotocol(s) not supported: {}"
            aload 8 /* subprotocols */
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
        20: .line 152
            goto 22
        21: .line 153
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.http.FullHttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SEC_WEBSOCKET_PROTOCOL:Lio/netty/util/AsciiString;
            aload 9 /* selectedSubprotocol */
            invokevirtual io.netty.handler.codec.http.HttpHeaders.add:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
        end local 9 // java.lang.String selectedSubprotocol
        22: .line 156
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            areturn
        end local 8 // java.lang.String subprotocols
        end local 7 // java.lang.String accept
        end local 6 // byte[] sha1
        end local 5 // java.lang.String acceptSeed
        end local 4 // java.lang.CharSequence key
        end local 3 // io.netty.handler.codec.http.FullHttpResponse res
        end local 2 // io.netty.handler.codec.http.HttpHeaders headers
        end local 1 // io.netty.handler.codec.http.FullHttpRequest req
        end local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   23     0                 this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08;
            0   23     1                  req  Lio/netty/handler/codec/http/FullHttpRequest;
            0   23     2              headers  Lio/netty/handler/codec/http/HttpHeaders;
            1   23     3                  res  Lio/netty/handler/codec/http/FullHttpResponse;
            4   23     4                  key  Ljava/lang/CharSequence;
            7   23     5           acceptSeed  Ljava/lang/String;
            8   23     6                 sha1  [B
            9   23     7               accept  Ljava/lang/String;
           15   23     8         subprotocols  Ljava/lang/String;
           17   22     9  selectedSubprotocol  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      req      
      headers  

  protected io.netty.handler.codec.http.websocketx.WebSocketFrameDecoder newWebsocketDecoder();
    descriptor: ()Lio/netty/handler/codec/http/websocketx/WebSocketFrameDecoder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
         0: .line 161
            new io.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder
            dup
            iconst_1
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.allowExtensions:Z
            aload 0 /* this */
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.maxFramePayloadLength:()I
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.allowMaskMismatch:Z
            invokespecial io.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder.<init>:(ZZIZ)V
            areturn
        end local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08;

  protected io.netty.handler.codec.http.websocketx.WebSocketFrameEncoder newWebSocketEncoder();
    descriptor: ()Lio/netty/handler/codec/http/websocketx/WebSocketFrameEncoder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
         0: .line 166
            new io.netty.handler.codec.http.websocketx.WebSocket08FrameEncoder
            dup
            iconst_0
            invokespecial io.netty.handler.codec.http.websocketx.WebSocket08FrameEncoder.<init>:(Z)V
            areturn
        end local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshaker08;
}
SourceFile: "WebSocketServerHandshaker08.java"