public final class io.netty.example.http.websocketx.client.WebSocketClient
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.netty.example.http.websocketx.client.WebSocketClient
  super_class: java.lang.Object
{
  static final java.lang.String URL;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 60
            ldc "url"
            ldc "ws://127.0.0.1:8080/websocket"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            putstatic io.netty.example.http.websocketx.client.WebSocketClient.URL:Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.example.http.websocketx.client.WebSocketClient this
         0: .line 58
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.netty.example.http.websocketx.client.WebSocketClient this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/example/http/websocketx/client/WebSocketClient;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=15, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 63
            new java.net.URI
            dup
            getstatic io.netty.example.http.websocketx.client.WebSocketClient.URL:Ljava/lang/String;
            invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
            astore 1 /* uri */
        start local 1 // java.net.URI uri
         1: .line 64
            aload 1 /* uri */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            ifnonnull 2
            ldc "ws"
            goto 3
      StackMap locals: java.net.URI
      StackMap stack:
         2: aload 1 /* uri */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         3: astore 2 /* scheme */
        start local 2 // java.lang.String scheme
         4: .line 65
            aload 1 /* uri */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            ifnonnull 5
            ldc "127.0.0.1"
            goto 6
      StackMap locals: java.lang.String
      StackMap stack:
         5: aload 1 /* uri */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         6: astore 3 /* host */
        start local 3 // java.lang.String host
         7: .line 67
            aload 1 /* uri */
            invokevirtual java.net.URI.getPort:()I
            iconst_m1
            if_icmpne 16
         8: .line 68
            ldc "ws"
            aload 2 /* scheme */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 11
         9: .line 69
            bipush 80
            istore 4 /* port */
        start local 4 // int port
        10: .line 70
            goto 17
        end local 4 // int port
      StackMap locals: java.lang.String
      StackMap stack:
        11: ldc "wss"
            aload 2 /* scheme */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 71
            sipush 443
            istore 4 /* port */
        start local 4 // int port
        13: .line 72
            goto 17
        end local 4 // int port
        14: .line 73
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 4 /* port */
        start local 4 // int port
        15: .line 75
            goto 17
        end local 4 // int port
        16: .line 76
      StackMap locals:
      StackMap stack:
            aload 1 /* uri */
            invokevirtual java.net.URI.getPort:()I
            istore 4 /* port */
        start local 4 // int port
        17: .line 79
      StackMap locals: int
      StackMap stack:
            ldc "ws"
            aload 2 /* scheme */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 20
            ldc "wss"
            aload 2 /* scheme */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 20
        18: .line 80
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Only WS(S) is supported."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        19: .line 81
            return
        20: .line 84
      StackMap locals:
      StackMap stack:
            ldc "wss"
            aload 2 /* scheme */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            istore 5 /* ssl */
        start local 5 // boolean ssl
        21: .line 86
            iload 5 /* ssl */
            ifeq 26
        22: .line 87
            invokestatic io.netty.handler.ssl.SslContextBuilder.forClient:()Lio/netty/handler/ssl/SslContextBuilder;
        23: .line 88
            getstatic io.netty.handler.ssl.util.InsecureTrustManagerFactory.INSTANCE:Ljavax/net/ssl/TrustManagerFactory;
            invokevirtual io.netty.handler.ssl.SslContextBuilder.trustManager:(Ljavax/net/ssl/TrustManagerFactory;)Lio/netty/handler/ssl/SslContextBuilder;
            invokevirtual io.netty.handler.ssl.SslContextBuilder.build:()Lio/netty/handler/ssl/SslContext;
        24: .line 87
            astore 6 /* sslCtx */
        start local 6 // io.netty.handler.ssl.SslContext sslCtx
        25: .line 89
            goto 27
        end local 6 // io.netty.handler.ssl.SslContext sslCtx
        26: .line 90
      StackMap locals: int
      StackMap stack:
            aconst_null
            astore 6 /* sslCtx */
        start local 6 // io.netty.handler.ssl.SslContext sslCtx
        27: .line 93
      StackMap locals: io.netty.handler.ssl.SslContext
      StackMap stack:
            new io.netty.channel.nio.NioEventLoopGroup
            dup
            invokespecial io.netty.channel.nio.NioEventLoopGroup.<init>:()V
            astore 7 /* group */
        start local 7 // io.netty.channel.EventLoopGroup group
        28: .line 99
            new io.netty.example.http.websocketx.client.WebSocketClientHandler
            dup
        29: .line 101
            aload 1 /* uri */
            getstatic io.netty.handler.codec.http.websocketx.WebSocketVersion.V13:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            aconst_null
            iconst_1
            new io.netty.handler.codec.http.DefaultHttpHeaders
            dup
            invokespecial io.netty.handler.codec.http.DefaultHttpHeaders.<init>:()V
        30: .line 100
            invokestatic io.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory.newHandshaker:(Ljava/net/URI;Lio/netty/handler/codec/http/websocketx/WebSocketVersion;Ljava/lang/String;ZLio/netty/handler/codec/http/HttpHeaders;)Lio/netty/handler/codec/http/websocketx/WebSocketClientHandshaker;
        31: .line 99
            invokespecial io.netty.example.http.websocketx.client.WebSocketClientHandler.<init>:(Lio/netty/handler/codec/http/websocketx/WebSocketClientHandshaker;)V
        32: .line 98
            astore 8 /* handler */
        start local 8 // io.netty.example.http.websocketx.client.WebSocketClientHandler handler
        33: .line 103
            new io.netty.bootstrap.Bootstrap
            dup
            invokespecial io.netty.bootstrap.Bootstrap.<init>:()V
            astore 9 /* b */
        start local 9 // io.netty.bootstrap.Bootstrap b
        34: .line 104
            aload 9 /* b */
            aload 7 /* group */
            invokevirtual io.netty.bootstrap.Bootstrap.group:(Lio/netty/channel/EventLoopGroup;)Lio/netty/bootstrap/AbstractBootstrap;
            checkcast io.netty.bootstrap.Bootstrap
        35: .line 105
            ldc Lio/netty/channel/socket/nio/NioSocketChannel;
            invokevirtual io.netty.bootstrap.Bootstrap.channel:(Ljava/lang/Class;)Lio/netty/bootstrap/AbstractBootstrap;
            checkcast io.netty.bootstrap.Bootstrap
        36: .line 106
            new io.netty.example.http.websocketx.client.WebSocketClient$1
            dup
            aload 6 /* sslCtx */
            aload 3 /* host */
            iload 4 /* port */
            aload 8 /* handler */
            invokespecial io.netty.example.http.websocketx.client.WebSocketClient$1.<init>:(Lio/netty/handler/ssl/SslContext;Ljava/lang/String;ILio/netty/example/http/websocketx/client/WebSocketClientHandler;)V
            invokevirtual io.netty.bootstrap.Bootstrap.handler:(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        37: .line 121
            aload 9 /* b */
            aload 1 /* uri */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            iload 4 /* port */
            invokevirtual io.netty.bootstrap.Bootstrap.connect:(Ljava/lang/String;I)Lio/netty/channel/ChannelFuture;
            invokeinterface io.netty.channel.ChannelFuture.sync:()Lio/netty/channel/ChannelFuture;
            invokeinterface io.netty.channel.ChannelFuture.channel:()Lio/netty/channel/Channel;
            astore 10 /* ch */
        start local 10 // io.netty.channel.Channel ch
        38: .line 122
            aload 8 /* handler */
            invokevirtual io.netty.example.http.websocketx.client.WebSocketClientHandler.handshakeFuture:()Lio/netty/channel/ChannelFuture;
            invokeinterface io.netty.channel.ChannelFuture.sync:()Lio/netty/channel/ChannelFuture;
            pop
        39: .line 124
            new java.io.BufferedReader
            dup
            new java.io.InputStreamReader
            dup
            getstatic java.lang.System.in:Ljava/io/InputStream;
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
            astore 11 /* console */
        start local 11 // java.io.BufferedReader console
        40: .line 126
      StackMap locals: java.lang.String[] java.net.URI java.lang.String java.lang.String int int io.netty.handler.ssl.SslContext io.netty.channel.EventLoopGroup io.netty.example.http.websocketx.client.WebSocketClientHandler io.netty.bootstrap.Bootstrap io.netty.channel.Channel java.io.BufferedReader
      StackMap stack:
            aload 11 /* console */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 12 /* msg */
        start local 12 // java.lang.String msg
        41: .line 127
            aload 12 /* msg */
            ifnonnull 43
        42: .line 128
            goto 57
        43: .line 129
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "bye"
            aload 12 /* msg */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 47
        44: .line 130
            aload 10 /* ch */
            new io.netty.handler.codec.http.websocketx.CloseWebSocketFrame
            dup
            invokespecial io.netty.handler.codec.http.websocketx.CloseWebSocketFrame.<init>:()V
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        45: .line 131
            aload 10 /* ch */
            invokeinterface io.netty.channel.Channel.closeFuture:()Lio/netty/channel/ChannelFuture;
            invokeinterface io.netty.channel.ChannelFuture.sync:()Lio/netty/channel/ChannelFuture;
            pop
        46: .line 132
            goto 57
        47: .line 133
      StackMap locals:
      StackMap stack:
            ldc "ping"
            aload 12 /* msg */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 51
        48: .line 134
            new io.netty.handler.codec.http.websocketx.PingWebSocketFrame
            dup
            iconst_4
            newarray 8
            dup
            iconst_0
            bipush 8
            bastore
            dup
            iconst_1
            iconst_1
            bastore
            dup
            iconst_2
            bipush 8
            bastore
            dup
            iconst_3
            iconst_1
            bastore
            invokestatic io.netty.buffer.Unpooled.wrappedBuffer:([B)Lio/netty/buffer/ByteBuf;
            invokespecial io.netty.handler.codec.http.websocketx.PingWebSocketFrame.<init>:(Lio/netty/buffer/ByteBuf;)V
            astore 13 /* frame */
        start local 13 // io.netty.handler.codec.http.websocketx.WebSocketFrame frame
        49: .line 135
            aload 10 /* ch */
            aload 13 /* frame */
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        end local 13 // io.netty.handler.codec.http.websocketx.WebSocketFrame frame
        50: .line 136
            goto 40
        51: .line 137
      StackMap locals:
      StackMap stack:
            new io.netty.handler.codec.http.websocketx.TextWebSocketFrame
            dup
            aload 12 /* msg */
            invokespecial io.netty.handler.codec.http.websocketx.TextWebSocketFrame.<init>:(Ljava/lang/String;)V
            astore 13 /* frame */
        start local 13 // io.netty.handler.codec.http.websocketx.WebSocketFrame frame
        52: .line 138
            aload 10 /* ch */
            aload 13 /* frame */
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        end local 13 // io.netty.handler.codec.http.websocketx.WebSocketFrame frame
        end local 12 // java.lang.String msg
        53: .line 125
            goto 40
        end local 11 // java.io.BufferedReader console
        end local 10 // io.netty.channel.Channel ch
        end local 9 // io.netty.bootstrap.Bootstrap b
        end local 8 // io.netty.example.http.websocketx.client.WebSocketClientHandler handler
        54: .line 141
      StackMap locals: java.lang.String[] java.net.URI java.lang.String java.lang.String int int io.netty.handler.ssl.SslContext io.netty.channel.EventLoopGroup
      StackMap stack: java.lang.Throwable
            astore 14
        55: .line 142
            aload 7 /* group */
            invokeinterface io.netty.channel.EventLoopGroup.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        56: .line 143
            aload 14
            athrow
        57: .line 142
      StackMap locals:
      StackMap stack:
            aload 7 /* group */
            invokeinterface io.netty.channel.EventLoopGroup.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        58: .line 144
            return
        end local 7 // io.netty.channel.EventLoopGroup group
        end local 6 // io.netty.handler.ssl.SslContext sslCtx
        end local 5 // boolean ssl
        end local 4 // int port
        end local 3 // java.lang.String host
        end local 2 // java.lang.String scheme
        end local 1 // java.net.URI uri
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   59     0     args  [Ljava/lang/String;
            1   59     1      uri  Ljava/net/URI;
            4   59     2   scheme  Ljava/lang/String;
            7   59     3     host  Ljava/lang/String;
           10   11     4     port  I
           13   14     4     port  I
           15   16     4     port  I
           17   59     4     port  I
           21   59     5      ssl  Z
           25   26     6   sslCtx  Lio/netty/handler/ssl/SslContext;
           27   59     6   sslCtx  Lio/netty/handler/ssl/SslContext;
           28   59     7    group  Lio/netty/channel/EventLoopGroup;
           33   54     8  handler  Lio/netty/example/http/websocketx/client/WebSocketClientHandler;
           34   54     9        b  Lio/netty/bootstrap/Bootstrap;
           38   54    10       ch  Lio/netty/channel/Channel;
           40   54    11  console  Ljava/io/BufferedReader;
           41   53    12      msg  Ljava/lang/String;
           49   50    13    frame  Lio/netty/handler/codec/http/websocketx/WebSocketFrame;
           52   53    13    frame  Lio/netty/handler/codec/http/websocketx/WebSocketFrame;
      Exception table:
        from    to  target  type
          28    54      54  any
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "WebSocketClient.java"
NestMembers:
  io.netty.example.http.websocketx.client.WebSocketClient$1
InnerClasses:
  io.netty.example.http.websocketx.client.WebSocketClient$1