public class io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory
  super_class: java.lang.Object
{
  private final java.lang.String webSocketURL;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private final int maxFramePayloadLength;
    descriptor: I
    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);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory this
        start local 1 // java.lang.String webSocketURL
        start local 2 // java.lang.String subprotocols
        start local 3 // boolean allowExtensions
         0: .line 58
            aload 0 /* this */
            aload 1 /* webSocketURL */
            aload 2 /* subprotocols */
            iload 3 /* allowExtensions */
            ldc 65536
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.<init>:(Ljava/lang/String;Ljava/lang/String;ZI)V
         1: .line 59
            return
        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.WebSocketServerHandshakerFactory this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory;
            0    2     1     webSocketURL  Ljava/lang/String;
            0    2     2     subprotocols  Ljava/lang/String;
            0    2     3  allowExtensions  Z
    MethodParameters:
                 Name  Flags
      webSocketURL     
      subprotocols     
      allowExtensions  

  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.WebSocketServerHandshakerFactory 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 78
            aload 0 /* this */
            aload 1 /* webSocketURL */
            aload 2 /* subprotocols */
            iload 3 /* allowExtensions */
            iload 4 /* maxFramePayloadLength */
            iconst_0
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.<init>:(Ljava/lang/String;Ljava/lang/String;ZIZ)V
         1: .line 79
            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.WebSocketServerHandshakerFactory this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    2     0                   this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory;
            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=2, locals=6, args_size=6
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory 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 98
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 101
            aload 0 /* this */
            aload 1 /* webSocketURL */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.webSocketURL:Ljava/lang/String;
         2: .line 102
            aload 0 /* this */
            aload 2 /* subprotocols */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.subprotocols:Ljava/lang/String;
         3: .line 103
            aload 0 /* this */
            iload 3 /* allowExtensions */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowExtensions:Z
         4: .line 104
            aload 0 /* this */
            iload 4 /* maxFramePayloadLength */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.maxFramePayloadLength:I
         5: .line 105
            aload 0 /* this */
            iload 5 /* allowMaskMismatch */
            putfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowMaskMismatch:Z
         6: .line 106
            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.WebSocketServerHandshakerFactory this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    7     0                   this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory;
            0    7     1           webSocketURL  Ljava/lang/String;
            0    7     2           subprotocols  Ljava/lang/String;
            0    7     3        allowExtensions  Z
            0    7     4  maxFramePayloadLength  I
            0    7     5      allowMaskMismatch  Z
    MethodParameters:
                       Name  Flags
      webSocketURL           
      subprotocols           
      allowExtensions        
      maxFramePayloadLength  
      allowMaskMismatch      

  public io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker newHandshaker(io.netty.handler.codec.http.HttpRequest);
    descriptor: (Lio/netty/handler/codec/http/HttpRequest;)Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshaker;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory this
        start local 1 // io.netty.handler.codec.http.HttpRequest req
         0: .line 116
            aload 1 /* req */
            invokeinterface io.netty.handler.codec.http.HttpRequest.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SEC_WEBSOCKET_VERSION:Lio/netty/util/AsciiString;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.get:(Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 2 /* version */
        start local 2 // java.lang.CharSequence version
         1: .line 117
            aload 2 /* version */
            ifnull 15
         2: .line 118
            aload 2 /* version */
            getstatic io.netty.handler.codec.http.websocketx.WebSocketVersion.V13:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketVersion.toHttpHeaderValue:()Ljava/lang/String;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 6
         3: .line 120
            new io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker13
            dup
         4: .line 121
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.webSocketURL:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.subprotocols:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowExtensions:Z
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.maxFramePayloadLength:I
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowMaskMismatch:Z
         5: .line 120
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker13.<init>:(Ljava/lang/String;Ljava/lang/String;ZIZ)V
            areturn
         6: .line 122
      StackMap locals: java.lang.CharSequence
      StackMap stack:
            aload 2 /* version */
            getstatic io.netty.handler.codec.http.websocketx.WebSocketVersion.V08:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketVersion.toHttpHeaderValue:()Ljava/lang/String;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 10
         7: .line 124
            new io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08
            dup
         8: .line 125
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.webSocketURL:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.subprotocols:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowExtensions:Z
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.maxFramePayloadLength:I
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowMaskMismatch:Z
         9: .line 124
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker08.<init>:(Ljava/lang/String;Ljava/lang/String;ZIZ)V
            areturn
        10: .line 126
      StackMap locals:
      StackMap stack:
            aload 2 /* version */
            getstatic io.netty.handler.codec.http.websocketx.WebSocketVersion.V07:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketVersion.toHttpHeaderValue:()Ljava/lang/String;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
        11: .line 128
            new io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker07
            dup
        12: .line 129
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.webSocketURL:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.subprotocols:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowExtensions:Z
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.maxFramePayloadLength:I
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.allowMaskMismatch:Z
        13: .line 128
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker07.<init>:(Ljava/lang/String;Ljava/lang/String;ZIZ)V
            areturn
        14: .line 131
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        15: .line 135
      StackMap locals:
      StackMap stack:
            new io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker00
            dup
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.webSocketURL:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.subprotocols:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.maxFramePayloadLength:I
            invokespecial io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker00.<init>:(Ljava/lang/String;Ljava/lang/String;I)V
            areturn
        end local 2 // java.lang.CharSequence version
        end local 1 // io.netty.handler.codec.http.HttpRequest req
        end local 0 // io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lio/netty/handler/codec/http/websocketx/WebSocketServerHandshakerFactory;
            0   16     1      req  Lio/netty/handler/codec/http/HttpRequest;
            1   16     2  version  Ljava/lang/CharSequence;
    MethodParameters:
      Name  Flags
      req   

  public static void sendUnsupportedWebSocketVersionResponse(io.netty.channel.Channel);
    descriptor: (Lio/netty/channel/Channel;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.Channel channel
         0: .line 144
            aload 0 /* channel */
            invokestatic io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse:(Lio/netty/channel/Channel;)Lio/netty/channel/ChannelFuture;
            pop
         1: .line 145
            return
        end local 0 // io.netty.channel.Channel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  channel  Lio/netty/channel/Channel;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      channel  

  public static io.netty.channel.ChannelFuture sendUnsupportedVersionResponse(io.netty.channel.Channel);
    descriptor: (Lio/netty/channel/Channel;)Lio/netty/channel/ChannelFuture;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.Channel channel
         0: .line 151
            aload 0 /* channel */
            aload 0 /* channel */
            invokeinterface io.netty.channel.Channel.newPromise:()Lio/netty/channel/ChannelPromise;
            invokestatic io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse:(Lio/netty/channel/Channel;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            areturn
        end local 0 // io.netty.channel.Channel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  channel  Lio/netty/channel/Channel;
    MethodParameters:
         Name  Flags
      channel  

  public static io.netty.channel.ChannelFuture sendUnsupportedVersionResponse(io.netty.channel.Channel, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.netty.channel.Channel channel
        start local 1 // io.netty.channel.ChannelPromise promise
         0: .line 158
            new io.netty.handler.codec.http.DefaultFullHttpResponse
            dup
         1: .line 159
            getstatic io.netty.handler.codec.http.HttpVersion.HTTP_1_1:Lio/netty/handler/codec/http/HttpVersion;
         2: .line 160
            getstatic io.netty.handler.codec.http.HttpResponseStatus.UPGRADE_REQUIRED:Lio/netty/handler/codec/http/HttpResponseStatus;
         3: .line 158
            invokespecial io.netty.handler.codec.http.DefaultFullHttpResponse.<init>:(Lio/netty/handler/codec/http/HttpVersion;Lio/netty/handler/codec/http/HttpResponseStatus;)V
            astore 2 /* res */
        start local 2 // io.netty.handler.codec.http.HttpResponse res
         4: .line 161
            aload 2 /* res */
            invokeinterface io.netty.handler.codec.http.HttpResponse.headers:()Lio/netty/handler/codec/http/HttpHeaders;
            getstatic io.netty.handler.codec.http.HttpHeaderNames.SEC_WEBSOCKET_VERSION:Lio/netty/util/AsciiString;
            getstatic io.netty.handler.codec.http.websocketx.WebSocketVersion.V13:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketVersion.toHttpHeaderValue:()Ljava/lang/String;
            invokevirtual io.netty.handler.codec.http.HttpHeaders.set:(Ljava/lang/CharSequence;Ljava/lang/Object;)Lio/netty/handler/codec/http/HttpHeaders;
            pop
         5: .line 162
            aload 2 /* res */
            lconst_0
            invokestatic io.netty.handler.codec.http.HttpUtil.setContentLength:(Lio/netty/handler/codec/http/HttpMessage;J)V
         6: .line 163
            aload 0 /* channel */
            aload 2 /* res */
            aload 1 /* promise */
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            areturn
        end local 2 // io.netty.handler.codec.http.HttpResponse res
        end local 1 // io.netty.channel.ChannelPromise promise
        end local 0 // io.netty.channel.Channel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  channel  Lio/netty/channel/Channel;
            0    7     1  promise  Lio/netty/channel/ChannelPromise;
            4    7     2      res  Lio/netty/handler/codec/http/HttpResponse;
    MethodParameters:
         Name  Flags
      channel  
      promise  
}
SourceFile: "WebSocketServerHandshakerFactory.java"