public final class io.netty.example.localecho.LocalEcho
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.netty.example.localecho.LocalEcho
  super_class: java.lang.Object
{
  static final java.lang.String PORT;
    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 37
            ldc "port"
            ldc "test_port"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            putstatic io.netty.example.localecho.LocalEcho.PORT: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.localecho.LocalEcho this
         0: .line 35
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.netty.example.localecho.LocalEcho this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/example/localecho/LocalEcho;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=11, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 41
            new io.netty.channel.local.LocalAddress
            dup
            getstatic io.netty.example.localecho.LocalEcho.PORT:Ljava/lang/String;
            invokespecial io.netty.channel.local.LocalAddress.<init>:(Ljava/lang/String;)V
            astore 1 /* addr */
        start local 1 // io.netty.channel.local.LocalAddress addr
         1: .line 43
            new io.netty.channel.DefaultEventLoopGroup
            dup
            invokespecial io.netty.channel.DefaultEventLoopGroup.<init>:()V
            astore 2 /* serverGroup */
        start local 2 // io.netty.channel.EventLoopGroup serverGroup
         2: .line 44
            new io.netty.channel.nio.NioEventLoopGroup
            dup
            invokespecial io.netty.channel.nio.NioEventLoopGroup.<init>:()V
            astore 3 /* clientGroup */
        start local 3 // io.netty.channel.EventLoopGroup clientGroup
         3: .line 49
            new io.netty.bootstrap.ServerBootstrap
            dup
            invokespecial io.netty.bootstrap.ServerBootstrap.<init>:()V
            astore 4 /* sb */
        start local 4 // io.netty.bootstrap.ServerBootstrap sb
         4: .line 50
            aload 4 /* sb */
            aload 2 /* serverGroup */
            invokevirtual io.netty.bootstrap.ServerBootstrap.group:(Lio/netty/channel/EventLoopGroup;)Lio/netty/bootstrap/ServerBootstrap;
         5: .line 51
            ldc Lio/netty/channel/local/LocalServerChannel;
            invokevirtual io.netty.bootstrap.ServerBootstrap.channel:(Ljava/lang/Class;)Lio/netty/bootstrap/AbstractBootstrap;
            checkcast io.netty.bootstrap.ServerBootstrap
         6: .line 52
            new io.netty.example.localecho.LocalEcho$1
            dup
            invokespecial io.netty.example.localecho.LocalEcho$1.<init>:()V
            invokevirtual io.netty.bootstrap.ServerBootstrap.handler:(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/AbstractBootstrap;
            checkcast io.netty.bootstrap.ServerBootstrap
         7: .line 58
            new io.netty.example.localecho.LocalEcho$2
            dup
            invokespecial io.netty.example.localecho.LocalEcho$2.<init>:()V
            invokevirtual io.netty.bootstrap.ServerBootstrap.childHandler:(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/ServerBootstrap;
            pop
         8: .line 67
            new io.netty.bootstrap.Bootstrap
            dup
            invokespecial io.netty.bootstrap.Bootstrap.<init>:()V
            astore 5 /* cb */
        start local 5 // io.netty.bootstrap.Bootstrap cb
         9: .line 68
            aload 5 /* cb */
            aload 3 /* clientGroup */
            invokevirtual io.netty.bootstrap.Bootstrap.group:(Lio/netty/channel/EventLoopGroup;)Lio/netty/bootstrap/AbstractBootstrap;
            checkcast io.netty.bootstrap.Bootstrap
        10: .line 69
            ldc Lio/netty/channel/local/LocalChannel;
            invokevirtual io.netty.bootstrap.Bootstrap.channel:(Ljava/lang/Class;)Lio/netty/bootstrap/AbstractBootstrap;
            checkcast io.netty.bootstrap.Bootstrap
        11: .line 70
            new io.netty.example.localecho.LocalEcho$3
            dup
            invokespecial io.netty.example.localecho.LocalEcho$3.<init>:()V
            invokevirtual io.netty.bootstrap.Bootstrap.handler:(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
        12: .line 80
            aload 4 /* sb */
            aload 1 /* addr */
            invokevirtual io.netty.bootstrap.ServerBootstrap.bind:(Ljava/net/SocketAddress;)Lio/netty/channel/ChannelFuture;
            invokeinterface io.netty.channel.ChannelFuture.sync:()Lio/netty/channel/ChannelFuture;
            pop
        13: .line 83
            aload 5 /* cb */
            aload 1 /* addr */
            invokevirtual io.netty.bootstrap.Bootstrap.connect:(Ljava/net/SocketAddress;)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 6 /* ch */
        start local 6 // io.netty.channel.Channel ch
        14: .line 86
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Enter text (quit to end)"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        15: .line 87
            aconst_null
            astore 7 /* lastWriteFuture */
        start local 7 // io.netty.channel.ChannelFuture lastWriteFuture
        16: .line 88
            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 8 /* in */
        start local 8 // java.io.BufferedReader in
        17: .line 90
      StackMap locals: java.lang.String[] io.netty.channel.local.LocalAddress io.netty.channel.EventLoopGroup io.netty.channel.EventLoopGroup io.netty.bootstrap.ServerBootstrap io.netty.bootstrap.Bootstrap io.netty.channel.Channel io.netty.channel.ChannelFuture java.io.BufferedReader
      StackMap stack:
            aload 8 /* in */
            invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
            astore 9 /* line */
        start local 9 // java.lang.String line
        18: .line 91
            aload 9 /* line */
            ifnull 22
            ldc "quit"
            aload 9 /* line */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 20
        19: .line 92
            goto 22
        20: .line 96
      StackMap locals: java.lang.String
      StackMap stack:
            aload 6 /* ch */
            aload 9 /* line */
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            astore 7 /* lastWriteFuture */
        end local 9 // java.lang.String line
        21: .line 89
            goto 17
        22: .line 100
      StackMap locals:
      StackMap stack:
            aload 7 /* lastWriteFuture */
            ifnull 29
        23: .line 101
            aload 7 /* lastWriteFuture */
            invokeinterface io.netty.channel.ChannelFuture.awaitUninterruptibly:()Lio/netty/channel/ChannelFuture;
            pop
        end local 8 // java.io.BufferedReader in
        end local 7 // io.netty.channel.ChannelFuture lastWriteFuture
        end local 6 // io.netty.channel.Channel ch
        end local 5 // io.netty.bootstrap.Bootstrap cb
        end local 4 // io.netty.bootstrap.ServerBootstrap sb
        24: .line 103
            goto 29
      StackMap locals: java.lang.String[] io.netty.channel.local.LocalAddress io.netty.channel.EventLoopGroup io.netty.channel.EventLoopGroup
      StackMap stack: java.lang.Throwable
        25: astore 10
        26: .line 104
            aload 2 /* serverGroup */
            invokeinterface io.netty.channel.EventLoopGroup.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        27: .line 105
            aload 3 /* clientGroup */
            invokeinterface io.netty.channel.EventLoopGroup.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        28: .line 106
            aload 10
            athrow
        29: .line 104
      StackMap locals:
      StackMap stack:
            aload 2 /* serverGroup */
            invokeinterface io.netty.channel.EventLoopGroup.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        30: .line 105
            aload 3 /* clientGroup */
            invokeinterface io.netty.channel.EventLoopGroup.shutdownGracefully:()Lio/netty/util/concurrent/Future;
            pop
        31: .line 107
            return
        end local 3 // io.netty.channel.EventLoopGroup clientGroup
        end local 2 // io.netty.channel.EventLoopGroup serverGroup
        end local 1 // io.netty.channel.local.LocalAddress addr
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   32     0             args  [Ljava/lang/String;
            1   32     1             addr  Lio/netty/channel/local/LocalAddress;
            2   32     2      serverGroup  Lio/netty/channel/EventLoopGroup;
            3   32     3      clientGroup  Lio/netty/channel/EventLoopGroup;
            4   24     4               sb  Lio/netty/bootstrap/ServerBootstrap;
            9   24     5               cb  Lio/netty/bootstrap/Bootstrap;
           14   24     6               ch  Lio/netty/channel/Channel;
           16   24     7  lastWriteFuture  Lio/netty/channel/ChannelFuture;
           17   24     8               in  Ljava/io/BufferedReader;
           18   21     9             line  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3    25      25  any
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "LocalEcho.java"
NestMembers:
  io.netty.example.localecho.LocalEcho$1  io.netty.example.localecho.LocalEcho$2  io.netty.example.localecho.LocalEcho$3
InnerClasses:
  io.netty.example.localecho.LocalEcho$1
  io.netty.example.localecho.LocalEcho$2
  io.netty.example.localecho.LocalEcho$3