public class io.netty.channel.socket.nio.NioSocketChannel extends io.netty.channel.nio.AbstractNioByteChannel implements io.netty.channel.socket.SocketChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.channel.socket.nio.NioSocketChannel
  super_class: io.netty.channel.nio.AbstractNioByteChannel
{
  private static final io.netty.util.internal.logging.InternalLogger logger;
    descriptor: Lio/netty/util/internal/logging/InternalLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.nio.channels.spi.SelectorProvider DEFAULT_SELECTOR_PROVIDER;
    descriptor: Ljava/nio/channels/spi/SelectorProvider;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final io.netty.channel.socket.SocketChannelConfig config;
    descriptor: Lio/netty/channel/socket/SocketChannelConfig;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 55
            ldc Lio/netty/channel/socket/nio/NioSocketChannel;
            invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
            putstatic io.netty.channel.socket.nio.NioSocketChannel.logger:Lio/netty/util/internal/logging/InternalLogger;
         1: .line 56
            invokestatic java.nio.channels.spi.SelectorProvider.provider:()Ljava/nio/channels/spi/SelectorProvider;
            putstatic io.netty.channel.socket.nio.NioSocketChannel.DEFAULT_SELECTOR_PROVIDER:Ljava/nio/channels/spi/SelectorProvider;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.nio.channels.SocketChannel newSocket(java.nio.channels.spi.SelectorProvider);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;)Ljava/nio/channels/SocketChannel;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.nio.channels.spi.SelectorProvider provider
         0: .line 66
            aload 0 /* provider */
            invokevirtual java.nio.channels.spi.SelectorProvider.openSocketChannel:()Ljava/nio/channels/SocketChannel;
         1: areturn
         2: .line 67
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
         3: .line 68
            new io.netty.channel.ChannelException
            dup
            ldc "Failed to open a socket."
            aload 1 /* e */
            invokespecial io.netty.channel.ChannelException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        end local 0 // java.nio.channels.spi.SelectorProvider provider
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  provider  Ljava/nio/channels/spi/SelectorProvider;
            3    4     1         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    MethodParameters:
          Name  Flags
      provider  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 78
            aload 0 /* this */
            getstatic io.netty.channel.socket.nio.NioSocketChannel.DEFAULT_SELECTOR_PROVIDER:Ljava/nio/channels/spi/SelectorProvider;
            invokespecial io.netty.channel.socket.nio.NioSocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 79
            return
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public void <init>(java.nio.channels.spi.SelectorProvider);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // java.nio.channels.spi.SelectorProvider provider
         0: .line 85
            aload 0 /* this */
            aload 1 /* provider */
            invokestatic io.netty.channel.socket.nio.NioSocketChannel.newSocket:(Ljava/nio/channels/spi/SelectorProvider;)Ljava/nio/channels/SocketChannel;
            invokespecial io.netty.channel.socket.nio.NioSocketChannel.<init>:(Ljava/nio/channels/SocketChannel;)V
         1: .line 86
            return
        end local 1 // java.nio.channels.spi.SelectorProvider provider
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    2     1  provider  Ljava/nio/channels/spi/SelectorProvider;
    MethodParameters:
          Name  Flags
      provider  

  public void <init>(java.nio.channels.SocketChannel);
    descriptor: (Ljava/nio/channels/SocketChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // java.nio.channels.SocketChannel socket
         0: .line 92
            aload 0 /* this */
            aconst_null
            aload 1 /* socket */
            invokespecial io.netty.channel.socket.nio.NioSocketChannel.<init>:(Lio/netty/channel/Channel;Ljava/nio/channels/SocketChannel;)V
         1: .line 93
            return
        end local 1 // java.nio.channels.SocketChannel socket
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    2     1  socket  Ljava/nio/channels/SocketChannel;
    MethodParameters:
        Name  Flags
      socket  

  public void <init>(io.netty.channel.Channel, java.nio.channels.SocketChannel);
    descriptor: (Lio/netty/channel/Channel;Ljava/nio/channels/SocketChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.Channel parent
        start local 2 // java.nio.channels.SocketChannel socket
         0: .line 102
            aload 0 /* this */
            aload 1 /* parent */
            aload 2 /* socket */
            invokespecial io.netty.channel.nio.AbstractNioByteChannel.<init>:(Lio/netty/channel/Channel;Ljava/nio/channels/SelectableChannel;)V
         1: .line 103
            aload 0 /* this */
            new io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* socket */
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokespecial io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.<init>:(Lio/netty/channel/socket/nio/NioSocketChannel;Lio/netty/channel/socket/nio/NioSocketChannel;Ljava/net/Socket;)V
            putfield io.netty.channel.socket.nio.NioSocketChannel.config:Lio/netty/channel/socket/SocketChannelConfig;
         2: .line 104
            return
        end local 2 // java.nio.channels.SocketChannel socket
        end local 1 // io.netty.channel.Channel parent
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    3     1  parent  Lio/netty/channel/Channel;
            0    3     2  socket  Ljava/nio/channels/SocketChannel;
    MethodParameters:
        Name  Flags
      parent  
      socket  

  public io.netty.channel.socket.ServerSocketChannel parent();
    descriptor: ()Lio/netty/channel/socket/ServerSocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 108
            aload 0 /* this */
            invokespecial io.netty.channel.nio.AbstractNioByteChannel.parent:()Lio/netty/channel/Channel;
            checkcast io.netty.channel.socket.ServerSocketChannel
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public io.netty.channel.socket.SocketChannelConfig config();
    descriptor: ()Lio/netty/channel/socket/SocketChannelConfig;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 113
            aload 0 /* this */
            getfield io.netty.channel.socket.nio.NioSocketChannel.config:Lio/netty/channel/socket/SocketChannelConfig;
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  protected java.nio.channels.SocketChannel javaChannel();
    descriptor: ()Ljava/nio/channels/SocketChannel;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 118
            aload 0 /* this */
            invokespecial io.netty.channel.nio.AbstractNioByteChannel.javaChannel:()Ljava/nio/channels/SelectableChannel;
            checkcast java.nio.channels.SocketChannel
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public boolean isActive();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 123
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            astore 1 /* ch */
        start local 1 // java.nio.channels.SocketChannel ch
         1: .line 124
            aload 1 /* ch */
            invokevirtual java.nio.channels.SocketChannel.isOpen:()Z
            ifeq 2
            aload 1 /* ch */
            invokevirtual java.nio.channels.SocketChannel.isConnected:()Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: java.nio.channels.SocketChannel
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // java.nio.channels.SocketChannel ch
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;
            1    3     1    ch  Ljava/nio/channels/SocketChannel;

  public boolean isOutputShutdown();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 129
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.isOutputShutdown:()Z
            ifne 1
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.isActive:()Z
            ifeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public boolean isInputShutdown();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 134
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.isInputShutdown:()Z
            ifne 1
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.isActive:()Z
            ifeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public boolean isShutdown();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 139
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            astore 1 /* socket */
        start local 1 // java.net.Socket socket
         1: .line 140
            aload 1 /* socket */
            invokevirtual java.net.Socket.isInputShutdown:()Z
            ifeq 2
            aload 1 /* socket */
            invokevirtual java.net.Socket.isOutputShutdown:()Z
            ifne 3
      StackMap locals: java.net.Socket
      StackMap stack:
         2: aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.isActive:()Z
            ifeq 3
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // java.net.Socket socket
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/netty/channel/socket/nio/NioSocketChannel;
            1    4     1  socket  Ljava/net/Socket;

  public java.net.InetSocketAddress localAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 145
            aload 0 /* this */
            invokespecial io.netty.channel.nio.AbstractNioByteChannel.localAddress:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public java.net.InetSocketAddress remoteAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 150
            aload 0 /* this */
            invokespecial io.netty.channel.nio.AbstractNioByteChannel.remoteAddress:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  protected final void doShutdownOutput();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 156
            invokestatic io.netty.util.internal.PlatformDependent.javaVersion:()I
            bipush 7
            if_icmplt 3
         1: .line 157
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.shutdownOutput:()Ljava/nio/channels/SocketChannel;
            pop
         2: .line 158
            goto 4
         3: .line 159
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.shutdownOutput:()V
         4: .line 161
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;
    Exceptions:
      throws java.lang.Exception

  public io.netty.channel.ChannelFuture shutdownOutput();
    descriptor: ()Lio/netty/channel/ChannelFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 165
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.newPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownOutput:(Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public io.netty.channel.ChannelFuture shutdownOutput(io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.ChannelPromise promise
         0: .line 170
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.eventLoop:()Lio/netty/channel/nio/NioEventLoop;
            astore 2 /* loop */
        start local 2 // io.netty.channel.EventLoop loop
         1: .line 171
            aload 2 /* loop */
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifeq 4
         2: .line 172
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.unsafe:()Lio/netty/channel/nio/AbstractNioChannel$NioUnsafe;
            checkcast io.netty.channel.AbstractChannel$AbstractUnsafe
            aload 1 /* promise */
            invokevirtual io.netty.channel.AbstractChannel$AbstractUnsafe.shutdownOutput:(Lio/netty/channel/ChannelPromise;)V
         3: .line 173
            goto 5
         4: .line 174
      StackMap locals: io.netty.channel.EventLoop
      StackMap stack:
            aload 2 /* loop */
            new io.netty.channel.socket.nio.NioSocketChannel$1
            dup
            aload 0 /* this */
            aload 1 /* promise */
            invokespecial io.netty.channel.socket.nio.NioSocketChannel$1.<init>:(Lio/netty/channel/socket/nio/NioSocketChannel;Lio/netty/channel/ChannelPromise;)V
            invokeinterface io.netty.channel.EventLoop.execute:(Ljava/lang/Runnable;)V
         5: .line 181
      StackMap locals:
      StackMap stack:
            aload 1 /* promise */
            areturn
        end local 2 // io.netty.channel.EventLoop loop
        end local 1 // io.netty.channel.ChannelPromise promise
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    6     1  promise  Lio/netty/channel/ChannelPromise;
            1    6     2     loop  Lio/netty/channel/EventLoop;
    MethodParameters:
         Name  Flags
      promise  final

  public io.netty.channel.ChannelFuture shutdownInput();
    descriptor: ()Lio/netty/channel/ChannelFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 186
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.newPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownInput:(Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  protected boolean isInputShutdown0();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 191
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.isInputShutdown:()Z
            ireturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public io.netty.channel.ChannelFuture shutdownInput(io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.ChannelPromise promise
         0: .line 196
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.eventLoop:()Lio/netty/channel/nio/NioEventLoop;
            astore 2 /* loop */
        start local 2 // io.netty.channel.EventLoop loop
         1: .line 197
            aload 2 /* loop */
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifeq 4
         2: .line 198
            aload 0 /* this */
            aload 1 /* promise */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownInput0:(Lio/netty/channel/ChannelPromise;)V
         3: .line 199
            goto 5
         4: .line 200
      StackMap locals: io.netty.channel.EventLoop
      StackMap stack:
            aload 2 /* loop */
            new io.netty.channel.socket.nio.NioSocketChannel$2
            dup
            aload 0 /* this */
            aload 1 /* promise */
            invokespecial io.netty.channel.socket.nio.NioSocketChannel$2.<init>:(Lio/netty/channel/socket/nio/NioSocketChannel;Lio/netty/channel/ChannelPromise;)V
            invokeinterface io.netty.channel.EventLoop.execute:(Ljava/lang/Runnable;)V
         5: .line 207
      StackMap locals:
      StackMap stack:
            aload 1 /* promise */
            areturn
        end local 2 // io.netty.channel.EventLoop loop
        end local 1 // io.netty.channel.ChannelPromise promise
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    6     1  promise  Lio/netty/channel/ChannelPromise;
            1    6     2     loop  Lio/netty/channel/EventLoop;
    MethodParameters:
         Name  Flags
      promise  final

  public io.netty.channel.ChannelFuture shutdown();
    descriptor: ()Lio/netty/channel/ChannelFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 212
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.newPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdown:(Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public io.netty.channel.ChannelFuture shutdown(io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelPromise;)Lio/netty/channel/ChannelFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.ChannelPromise promise
         0: .line 217
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownOutput:()Lio/netty/channel/ChannelFuture;
            astore 2 /* shutdownOutputFuture */
        start local 2 // io.netty.channel.ChannelFuture shutdownOutputFuture
         1: .line 218
            aload 2 /* shutdownOutputFuture */
            invokeinterface io.netty.channel.ChannelFuture.isDone:()Z
            ifeq 4
         2: .line 219
            aload 0 /* this */
            aload 2 /* shutdownOutputFuture */
            aload 1 /* promise */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownOutputDone:(Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelPromise;)V
         3: .line 220
            goto 5
         4: .line 221
      StackMap locals: io.netty.channel.ChannelFuture
      StackMap stack:
            aload 2 /* shutdownOutputFuture */
            new io.netty.channel.socket.nio.NioSocketChannel$3
            dup
            aload 0 /* this */
            aload 1 /* promise */
            invokespecial io.netty.channel.socket.nio.NioSocketChannel$3.<init>:(Lio/netty/channel/socket/nio/NioSocketChannel;Lio/netty/channel/ChannelPromise;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
         5: .line 228
      StackMap locals:
      StackMap stack:
            aload 1 /* promise */
            areturn
        end local 2 // io.netty.channel.ChannelFuture shutdownOutputFuture
        end local 1 // io.netty.channel.ChannelPromise promise
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0                  this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    6     1               promise  Lio/netty/channel/ChannelPromise;
            1    6     2  shutdownOutputFuture  Lio/netty/channel/ChannelFuture;
    MethodParameters:
         Name  Flags
      promise  final

  private void shutdownOutputDone(io.netty.channel.ChannelFuture, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.ChannelFuture shutdownOutputFuture
        start local 2 // io.netty.channel.ChannelPromise promise
         0: .line 232
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownInput:()Lio/netty/channel/ChannelFuture;
            astore 3 /* shutdownInputFuture */
        start local 3 // io.netty.channel.ChannelFuture shutdownInputFuture
         1: .line 233
            aload 3 /* shutdownInputFuture */
            invokeinterface io.netty.channel.ChannelFuture.isDone:()Z
            ifeq 4
         2: .line 234
            aload 1 /* shutdownOutputFuture */
            aload 3 /* shutdownInputFuture */
            aload 2 /* promise */
            invokestatic io.netty.channel.socket.nio.NioSocketChannel.shutdownDone:(Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelPromise;)V
         3: .line 235
            goto 5
         4: .line 236
      StackMap locals: io.netty.channel.ChannelFuture
      StackMap stack:
            aload 3 /* shutdownInputFuture */
            new io.netty.channel.socket.nio.NioSocketChannel$4
            dup
            aload 0 /* this */
            aload 1 /* shutdownOutputFuture */
            aload 2 /* promise */
            invokespecial io.netty.channel.socket.nio.NioSocketChannel$4.<init>:(Lio/netty/channel/socket/nio/NioSocketChannel;Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelPromise;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
         5: .line 243
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.netty.channel.ChannelFuture shutdownInputFuture
        end local 2 // io.netty.channel.ChannelPromise promise
        end local 1 // io.netty.channel.ChannelFuture shutdownOutputFuture
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0                  this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    6     1  shutdownOutputFuture  Lio/netty/channel/ChannelFuture;
            0    6     2               promise  Lio/netty/channel/ChannelPromise;
            1    6     3   shutdownInputFuture  Lio/netty/channel/ChannelFuture;
    MethodParameters:
                      Name  Flags
      shutdownOutputFuture  final
      promise               final

  private static void shutdownDone(io.netty.channel.ChannelFuture, io.netty.channel.ChannelFuture, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelFuture;Lio/netty/channel/ChannelPromise;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // io.netty.channel.ChannelFuture shutdownOutputFuture
        start local 1 // io.netty.channel.ChannelFuture shutdownInputFuture
        start local 2 // io.netty.channel.ChannelPromise promise
         0: .line 248
            aload 0 /* shutdownOutputFuture */
            invokeinterface io.netty.channel.ChannelFuture.cause:()Ljava/lang/Throwable;
            astore 3 /* shutdownOutputCause */
        start local 3 // java.lang.Throwable shutdownOutputCause
         1: .line 249
            aload 1 /* shutdownInputFuture */
            invokeinterface io.netty.channel.ChannelFuture.cause:()Ljava/lang/Throwable;
            astore 4 /* shutdownInputCause */
        start local 4 // java.lang.Throwable shutdownInputCause
         2: .line 250
            aload 3 /* shutdownOutputCause */
            ifnull 9
         3: .line 251
            aload 4 /* shutdownInputCause */
            ifnull 7
         4: .line 252
            getstatic io.netty.channel.socket.nio.NioSocketChannel.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Exception suppressed because a previous exception occurred."
         5: .line 253
            aload 4 /* shutdownInputCause */
         6: .line 252
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
         7: .line 255
      StackMap locals: java.lang.Throwable java.lang.Throwable
      StackMap stack:
            aload 2 /* promise */
            aload 3 /* shutdownOutputCause */
            invokeinterface io.netty.channel.ChannelPromise.setFailure:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPromise;
            pop
         8: .line 256
            goto 13
      StackMap locals:
      StackMap stack:
         9: aload 4 /* shutdownInputCause */
            ifnull 12
        10: .line 257
            aload 2 /* promise */
            aload 4 /* shutdownInputCause */
            invokeinterface io.netty.channel.ChannelPromise.setFailure:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPromise;
            pop
        11: .line 258
            goto 13
        12: .line 259
      StackMap locals:
      StackMap stack:
            aload 2 /* promise */
            invokeinterface io.netty.channel.ChannelPromise.setSuccess:()Lio/netty/channel/ChannelPromise;
            pop
        13: .line 261
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.Throwable shutdownInputCause
        end local 3 // java.lang.Throwable shutdownOutputCause
        end local 2 // io.netty.channel.ChannelPromise promise
        end local 1 // io.netty.channel.ChannelFuture shutdownInputFuture
        end local 0 // io.netty.channel.ChannelFuture shutdownOutputFuture
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0  shutdownOutputFuture  Lio/netty/channel/ChannelFuture;
            0   14     1   shutdownInputFuture  Lio/netty/channel/ChannelFuture;
            0   14     2               promise  Lio/netty/channel/ChannelPromise;
            1   14     3   shutdownOutputCause  Ljava/lang/Throwable;
            2   14     4    shutdownInputCause  Ljava/lang/Throwable;
    MethodParameters:
                      Name  Flags
      shutdownOutputFuture  
      shutdownInputFuture   
      promise               

  private void shutdownInput0(io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelPromise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.ChannelPromise promise
         0: .line 264
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.shutdownInput0:()V
         1: .line 265
            aload 1 /* promise */
            invokeinterface io.netty.channel.ChannelPromise.setSuccess:()Lio/netty/channel/ChannelPromise;
            pop
         2: .line 266
            goto 5
      StackMap locals:
      StackMap stack: java.lang.Throwable
         3: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         4: .line 267
            aload 1 /* promise */
            aload 2 /* t */
            invokeinterface io.netty.channel.ChannelPromise.setFailure:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPromise;
            pop
        end local 2 // java.lang.Throwable t
         5: .line 269
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelPromise promise
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    6     1  promise  Lio/netty/channel/ChannelPromise;
            4    5     2        t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.Throwable
    MethodParameters:
         Name  Flags
      promise  final

  private void shutdownInput0();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 272
            invokestatic io.netty.util.internal.PlatformDependent.javaVersion:()I
            bipush 7
            if_icmplt 3
         1: .line 273
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.shutdownInput:()Ljava/nio/channels/SocketChannel;
            pop
         2: .line 274
            goto 4
         3: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.shutdownInput:()V
         4: .line 277
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;
    Exceptions:
      throws java.lang.Exception

  protected java.net.SocketAddress localAddress0();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 281
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getLocalSocketAddress:()Ljava/net/SocketAddress;
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  protected java.net.SocketAddress remoteAddress0();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 286
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            invokevirtual java.net.Socket.getRemoteSocketAddress:()Ljava/net/SocketAddress;
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  protected void doBind(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // java.net.SocketAddress localAddress
         0: .line 291
            aload 0 /* this */
            aload 1 /* localAddress */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doBind0:(Ljava/net/SocketAddress;)V
         1: .line 292
            return
        end local 1 // java.net.SocketAddress localAddress
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    2     1  localAddress  Ljava/net/SocketAddress;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
              Name  Flags
      localAddress  

  private void doBind0(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // java.net.SocketAddress localAddress
         0: .line 295
            invokestatic io.netty.util.internal.PlatformDependent.javaVersion:()I
            bipush 7
            if_icmplt 3
         1: .line 296
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            aload 1 /* localAddress */
            invokestatic io.netty.util.internal.SocketUtils.bind:(Ljava/nio/channels/SocketChannel;Ljava/net/SocketAddress;)V
         2: .line 297
            goto 4
         3: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
            aload 1 /* localAddress */
            invokestatic io.netty.util.internal.SocketUtils.bind:(Ljava/net/Socket;Ljava/net/SocketAddress;)V
         4: .line 300
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.net.SocketAddress localAddress
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    5     1  localAddress  Ljava/net/SocketAddress;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
              Name  Flags
      localAddress  

  protected boolean doConnect(java.net.SocketAddress, java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;Ljava/net/SocketAddress;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // java.net.SocketAddress remoteAddress
        start local 2 // java.net.SocketAddress localAddress
         0: .line 304
            aload 2 /* localAddress */
            ifnull 2
         1: .line 305
            aload 0 /* this */
            aload 2 /* localAddress */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doBind0:(Ljava/net/SocketAddress;)V
         2: .line 308
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* success */
        start local 3 // boolean success
         3: .line 310
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            aload 1 /* remoteAddress */
            invokestatic io.netty.util.internal.SocketUtils.connect:(Ljava/nio/channels/SocketChannel;Ljava/net/SocketAddress;)Z
            istore 4 /* connected */
        start local 4 // boolean connected
         4: .line 311
            iload 4 /* connected */
            ifne 6
         5: .line 312
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.selectionKey:()Ljava/nio/channels/SelectionKey;
            bipush 8
            invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
            pop
         6: .line 314
      StackMap locals: int int
      StackMap stack:
            iconst_1
            istore 3 /* success */
         7: .line 315
            iload 4 /* connected */
            istore 6
         8: .line 317
            iload 3 /* success */
            ifne 10
         9: .line 318
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doClose:()V
        10: .line 315
      StackMap locals: io.netty.channel.socket.nio.NioSocketChannel java.net.SocketAddress java.net.SocketAddress int int top int
      StackMap stack:
            iload 6
            ireturn
        end local 4 // boolean connected
        11: .line 316
      StackMap locals: io.netty.channel.socket.nio.NioSocketChannel java.net.SocketAddress java.net.SocketAddress int
      StackMap stack: java.lang.Throwable
            astore 5
        12: .line 317
            iload 3 /* success */
            ifne 14
        13: .line 318
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doClose:()V
        14: .line 320
      StackMap locals: io.netty.channel.socket.nio.NioSocketChannel java.net.SocketAddress java.net.SocketAddress int top java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        end local 3 // boolean success
        end local 2 // java.net.SocketAddress localAddress
        end local 1 // java.net.SocketAddress remoteAddress
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   15     0           this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0   15     1  remoteAddress  Ljava/net/SocketAddress;
            0   15     2   localAddress  Ljava/net/SocketAddress;
            3   15     3        success  Z
            4   11     4      connected  Z
      Exception table:
        from    to  target  type
           3     8      11  any
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
               Name  Flags
      remoteAddress  
      localAddress   

  protected void doFinishConnect();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 325
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.finishConnect:()Z
            ifne 2
         1: .line 326
            new java.lang.Error
            dup
            invokespecial java.lang.Error.<init>:()V
            athrow
         2: .line 328
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;
    Exceptions:
      throws java.lang.Exception

  protected void doDisconnect();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 332
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doClose:()V
         1: .line 333
            return
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;
    Exceptions:
      throws java.lang.Exception

  protected void doClose();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 337
            aload 0 /* this */
            invokespecial io.netty.channel.nio.AbstractNioByteChannel.doClose:()V
         1: .line 338
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            invokevirtual java.nio.channels.SocketChannel.close:()V
         2: .line 339
            return
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;
    Exceptions:
      throws java.lang.Exception

  protected int doReadBytes(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.buffer.ByteBuf byteBuf
         0: .line 343
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.unsafe:()Lio/netty/channel/nio/AbstractNioChannel$NioUnsafe;
            invokeinterface io.netty.channel.nio.AbstractNioChannel$NioUnsafe.recvBufAllocHandle:()Lio/netty/channel/RecvByteBufAllocator$Handle;
            astore 2 /* allocHandle */
        start local 2 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
         1: .line 344
            aload 2 /* allocHandle */
            aload 1 /* byteBuf */
            invokevirtual io.netty.buffer.ByteBuf.writableBytes:()I
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.attemptedBytesRead:(I)V
         2: .line 345
            aload 1 /* byteBuf */
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            aload 2 /* allocHandle */
            invokeinterface io.netty.channel.RecvByteBufAllocator$Handle.attemptedBytesRead:()I
            invokevirtual io.netty.buffer.ByteBuf.writeBytes:(Ljava/nio/channels/ScatteringByteChannel;I)I
            ireturn
        end local 2 // io.netty.channel.RecvByteBufAllocator$Handle allocHandle
        end local 1 // io.netty.buffer.ByteBuf byteBuf
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    3     1      byteBuf  Lio/netty/buffer/ByteBuf;
            1    3     2  allocHandle  Lio/netty/channel/RecvByteBufAllocator$Handle;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      byteBuf  

  protected int doWriteBytes(io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.buffer.ByteBuf buf
         0: .line 350
            aload 1 /* buf */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            istore 2 /* expectedWrittenBytes */
        start local 2 // int expectedWrittenBytes
         1: .line 351
            aload 1 /* buf */
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            iload 2 /* expectedWrittenBytes */
            invokevirtual io.netty.buffer.ByteBuf.readBytes:(Ljava/nio/channels/GatheringByteChannel;I)I
            ireturn
        end local 2 // int expectedWrittenBytes
        end local 1 // io.netty.buffer.ByteBuf buf
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    2     1                   buf  Lio/netty/buffer/ByteBuf;
            1    2     2  expectedWrittenBytes  I
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      buf   

  protected long doWriteFileRegion(io.netty.channel.FileRegion);
    descriptor: (Lio/netty/channel/FileRegion;)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.FileRegion region
         0: .line 356
            aload 1 /* region */
            invokeinterface io.netty.channel.FileRegion.transferred:()J
            lstore 2 /* position */
        start local 2 // long position
         1: .line 357
            aload 1 /* region */
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            lload 2 /* position */
            invokeinterface io.netty.channel.FileRegion.transferTo:(Ljava/nio/channels/WritableByteChannel;J)J
            lreturn
        end local 2 // long position
        end local 1 // io.netty.channel.FileRegion region
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    2     1    region  Lio/netty/channel/FileRegion;
            1    2     2  position  J
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      region  

  private void adjustMaxBytesPerGatheringWrite(int, int, int);
    descriptor: (III)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // int attempted
        start local 2 // int written
        start local 3 // int oldMaxBytesPerGatheringWrite
         0: .line 364
            iload 1 /* attempted */
            iload 2 /* written */
            if_icmpne 4
         1: .line 365
            iload 1 /* attempted */
            iconst_1
            ishl
            iload 3 /* oldMaxBytesPerGatheringWrite */
            if_icmple 6
         2: .line 366
            aload 0 /* this */
            getfield io.netty.channel.socket.nio.NioSocketChannel.config:Lio/netty/channel/socket/SocketChannelConfig;
            checkcast io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig
            iload 1 /* attempted */
            iconst_1
            ishl
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.setMaxBytesPerGatheringWrite:(I)V
         3: .line 368
            goto 6
      StackMap locals:
      StackMap stack:
         4: iload 1 /* attempted */
            sipush 4096
            if_icmple 6
            iload 2 /* written */
            iload 1 /* attempted */
            iconst_1
            iushr
            if_icmpge 6
         5: .line 369
            aload 0 /* this */
            getfield io.netty.channel.socket.nio.NioSocketChannel.config:Lio/netty/channel/socket/SocketChannelConfig;
            checkcast io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig
            iload 1 /* attempted */
            iconst_1
            iushr
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.setMaxBytesPerGatheringWrite:(I)V
         6: .line 371
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int oldMaxBytesPerGatheringWrite
        end local 2 // int written
        end local 1 // int attempted
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0    7     0                          this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0    7     1                     attempted  I
            0    7     2                       written  I
            0    7     3  oldMaxBytesPerGatheringWrite  I
    MethodParameters:
                              Name  Flags
      attempted                     
      written                       
      oldMaxBytesPerGatheringWrite  

  protected void doWrite(io.netty.channel.ChannelOutboundBuffer);
    descriptor: (Lio/netty/channel/ChannelOutboundBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
        start local 1 // io.netty.channel.ChannelOutboundBuffer in
         0: .line 375
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            astore 2 /* ch */
        start local 2 // java.nio.channels.SocketChannel ch
         1: .line 376
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.config:()Lio/netty/channel/socket/SocketChannelConfig;
            invokeinterface io.netty.channel.socket.SocketChannelConfig.getWriteSpinCount:()I
            istore 3 /* writeSpinCount */
        start local 3 // int writeSpinCount
         2: .line 378
      StackMap locals: java.nio.channels.SocketChannel int
      StackMap stack:
            aload 1 /* in */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.isEmpty:()Z
            ifeq 5
         3: .line 380
            aload 0 /* this */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.clearOpWrite:()V
         4: .line 382
            return
         5: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.socket.nio.NioSocketChannel.config:Lio/netty/channel/socket/SocketChannelConfig;
            checkcast io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig.getMaxBytesPerGatheringWrite:()I
            istore 4 /* maxBytesPerGatheringWrite */
        start local 4 // int maxBytesPerGatheringWrite
         6: .line 387
            aload 1 /* in */
            sipush 1024
            iload 4 /* maxBytesPerGatheringWrite */
            i2l
            invokevirtual io.netty.channel.ChannelOutboundBuffer.nioBuffers:(IJ)[Ljava/nio/ByteBuffer;
            astore 5 /* nioBuffers */
        start local 5 // java.nio.ByteBuffer[] nioBuffers
         7: .line 388
            aload 1 /* in */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.nioBufferCount:()I
            istore 6 /* nioBufferCnt */
        start local 6 // int nioBufferCnt
         8: .line 392
            iload 6 /* nioBufferCnt */
            tableswitch { // 0 - 1
                    0: 9
                    1: 11
              default: 21
          }
         9: .line 395
      StackMap locals: int java.nio.ByteBuffer[] int
      StackMap stack:
            iload 3 /* writeSpinCount */
            aload 0 /* this */
            aload 1 /* in */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doWrite0:(Lio/netty/channel/ChannelOutboundBuffer;)I
            isub
            istore 3 /* writeSpinCount */
        10: .line 396
            goto 31
        11: .line 401
      StackMap locals:
      StackMap stack:
            aload 5 /* nioBuffers */
            iconst_0
            aaload
            astore 7 /* buffer */
        start local 7 // java.nio.ByteBuffer buffer
        12: .line 402
            aload 7 /* buffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 8 /* attemptedBytes */
        start local 8 // int attemptedBytes
        13: .line 403
            aload 2 /* ch */
            aload 7 /* buffer */
            invokevirtual java.nio.channels.SocketChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 9 /* localWrittenBytes */
        start local 9 // int localWrittenBytes
        14: .line 404
            iload 9 /* localWrittenBytes */
            ifgt 17
        15: .line 405
            aload 0 /* this */
            iconst_1
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.incompleteWrite:(Z)V
        16: .line 406
            return
        17: .line 408
      StackMap locals: java.nio.ByteBuffer int int
      StackMap stack:
            aload 0 /* this */
            iload 8 /* attemptedBytes */
            iload 9 /* localWrittenBytes */
            iload 4 /* maxBytesPerGatheringWrite */
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.adjustMaxBytesPerGatheringWrite:(III)V
        18: .line 409
            aload 1 /* in */
            iload 9 /* localWrittenBytes */
            i2l
            invokevirtual io.netty.channel.ChannelOutboundBuffer.removeBytes:(J)V
        19: .line 410
            iinc 3 /* writeSpinCount */ -1
        20: .line 411
            goto 31
        end local 9 // int localWrittenBytes
        end local 8 // int attemptedBytes
        end local 7 // java.nio.ByteBuffer buffer
        21: .line 417
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.nioBufferSize:()J
            lstore 7 /* attemptedBytes */
        start local 7 // long attemptedBytes
        22: .line 418
            aload 2 /* ch */
            aload 5 /* nioBuffers */
            iconst_0
            iload 6 /* nioBufferCnt */
            invokevirtual java.nio.channels.SocketChannel.write:([Ljava/nio/ByteBuffer;II)J
            lstore 9 /* localWrittenBytes */
        start local 9 // long localWrittenBytes
        23: .line 419
            lload 9 /* localWrittenBytes */
            lconst_0
            lcmp
            ifgt 26
        24: .line 420
            aload 0 /* this */
            iconst_1
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.incompleteWrite:(Z)V
        25: .line 421
            return
        26: .line 424
      StackMap locals: long long
      StackMap stack:
            aload 0 /* this */
            lload 7 /* attemptedBytes */
            l2i
            lload 9 /* localWrittenBytes */
            l2i
        27: .line 425
            iload 4 /* maxBytesPerGatheringWrite */
        28: .line 424
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.adjustMaxBytesPerGatheringWrite:(III)V
        29: .line 426
            aload 1 /* in */
            lload 9 /* localWrittenBytes */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.removeBytes:(J)V
        30: .line 427
            iinc 3 /* writeSpinCount */ -1
        end local 9 // long localWrittenBytes
        end local 7 // long attemptedBytes
        end local 6 // int nioBufferCnt
        end local 5 // java.nio.ByteBuffer[] nioBuffers
        end local 4 // int maxBytesPerGatheringWrite
        31: .line 431
      StackMap locals: io.netty.channel.socket.nio.NioSocketChannel io.netty.channel.ChannelOutboundBuffer java.nio.channels.SocketChannel int
      StackMap stack:
            iload 3 /* writeSpinCount */
        32: .line 377
            ifgt 2
        33: .line 433
            aload 0 /* this */
            iload 3 /* writeSpinCount */
            ifge 34
            iconst_1
            goto 35
      StackMap locals:
      StackMap stack: io.netty.channel.socket.nio.NioSocketChannel
        34: iconst_0
      StackMap locals: io.netty.channel.socket.nio.NioSocketChannel io.netty.channel.ChannelOutboundBuffer java.nio.channels.SocketChannel int
      StackMap stack: io.netty.channel.socket.nio.NioSocketChannel int
        35: invokevirtual io.netty.channel.socket.nio.NioSocketChannel.incompleteWrite:(Z)V
        36: .line 434
            return
        end local 3 // int writeSpinCount
        end local 2 // java.nio.channels.SocketChannel ch
        end local 1 // io.netty.channel.ChannelOutboundBuffer in
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   37     0                       this  Lio/netty/channel/socket/nio/NioSocketChannel;
            0   37     1                         in  Lio/netty/channel/ChannelOutboundBuffer;
            1   37     2                         ch  Ljava/nio/channels/SocketChannel;
            2   37     3             writeSpinCount  I
            6   31     4  maxBytesPerGatheringWrite  I
            7   31     5                 nioBuffers  [Ljava/nio/ByteBuffer;
            8   31     6               nioBufferCnt  I
           12   21     7                     buffer  Ljava/nio/ByteBuffer;
           13   21     8             attemptedBytes  I
           14   21     9          localWrittenBytes  I
           22   31     7             attemptedBytes  J
           23   31     9          localWrittenBytes  J
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      in    

  protected io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe newUnsafe();
    descriptor: ()Lio/netty/channel/nio/AbstractNioChannel$AbstractNioUnsafe;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.channel.socket.nio.NioSocketChannel this
         0: .line 438
            new io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelUnsafe
            dup
            aload 0 /* this */
            invokespecial io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelUnsafe.<init>:(Lio/netty/channel/socket/nio/NioSocketChannel;)V
            areturn
        end local 0 // io.netty.channel.socket.nio.NioSocketChannel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/socket/nio/NioSocketChannel;

  public io.netty.channel.ChannelConfig config();
    descriptor: ()Lio/netty/channel/ChannelConfig;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.config:()Lio/netty/channel/socket/SocketChannelConfig;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.net.SocketAddress localAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.localAddress:()Ljava/net/InetSocketAddress;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected java.nio.channels.SelectableChannel javaChannel();
    descriptor: ()Ljava/nio/channels/SelectableChannel;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.javaChannel:()Ljava/nio/channels/SocketChannel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public io.netty.channel.Channel parent();
    descriptor: ()Lio/netty/channel/Channel;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.parent:()Lio/netty/channel/socket/ServerSocketChannel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected io.netty.channel.AbstractChannel$AbstractUnsafe newUnsafe();
    descriptor: ()Lio/netty/channel/AbstractChannel$AbstractUnsafe;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.newUnsafe:()Lio/netty/channel/nio/AbstractNioChannel$AbstractNioUnsafe;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.net.SocketAddress remoteAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.remoteAddress:()Ljava/net/InetSocketAddress;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void access$6(io.netty.channel.socket.nio.NioSocketChannel);
    descriptor: (Lio/netty/channel/socket/nio/NioSocketChannel;)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.doDeregister:()V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  static void access$7(io.netty.channel.socket.nio.NioSocketChannel);
    descriptor: (Lio/netty/channel/socket/nio/NioSocketChannel;)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.netty.channel.socket.nio.NioSocketChannel.clearReadPending:()V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "NioSocketChannel.java"
NestMembers:
  io.netty.channel.socket.nio.NioSocketChannel$1  io.netty.channel.socket.nio.NioSocketChannel$2  io.netty.channel.socket.nio.NioSocketChannel$3  io.netty.channel.socket.nio.NioSocketChannel$4  io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig  io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelUnsafe
InnerClasses:
  protected abstract AbstractUnsafe = io.netty.channel.AbstractChannel$AbstractUnsafe of io.netty.channel.AbstractChannel
  public abstract Handle = io.netty.channel.RecvByteBufAllocator$Handle of io.netty.channel.RecvByteBufAllocator
  protected abstract AbstractNioUnsafe = io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe of io.netty.channel.nio.AbstractNioChannel
  public abstract NioUnsafe = io.netty.channel.nio.AbstractNioChannel$NioUnsafe of io.netty.channel.nio.AbstractNioChannel
  io.netty.channel.socket.nio.NioSocketChannel$1
  io.netty.channel.socket.nio.NioSocketChannel$2
  io.netty.channel.socket.nio.NioSocketChannel$3
  io.netty.channel.socket.nio.NioSocketChannel$4
  private final NioSocketChannelConfig = io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelConfig of io.netty.channel.socket.nio.NioSocketChannel
  private final NioSocketChannelUnsafe = io.netty.channel.socket.nio.NioSocketChannel$NioSocketChannelUnsafe of io.netty.channel.socket.nio.NioSocketChannel