class sun.nio.ch.SocketChannelImpl extends java.nio.channels.SocketChannel implements sun.nio.ch.SelChImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.nio.ch.SocketChannelImpl
  super_class: java.nio.channels.SocketChannel
{
  private static sun.nio.ch.NativeDispatcher nd;
    descriptor: Lsun/nio/ch/NativeDispatcher;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private final java.io.FileDescriptor fd;
    descriptor: Ljava/io/FileDescriptor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int fdVal;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile long readerThread;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile long writerThread;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

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

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

  private boolean isReuseAddress;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private static final int ST_UNINITIALIZED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int ST_UNCONNECTED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int ST_PENDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int ST_CONNECTED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int ST_KILLPENDING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final int ST_KILLED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private int state;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.net.InetSocketAddress localAddress;
    descriptor: Ljava/net/InetSocketAddress;
    flags: (0x0002) ACC_PRIVATE

  private java.net.InetSocketAddress remoteAddress;
    descriptor: Ljava/net/InetSocketAddress;
    flags: (0x0002) ACC_PRIVATE

  private boolean isInputOpen;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean isOutputOpen;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean readyToConnect;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.net.Socket socket;
    descriptor: Ljava/net/Socket;
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            ldc Lsun/nio/ch/SocketChannelImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
         3: .line 1059
            invokestatic sun.nio.ch.IOUtil.load:()V
         4: .line 1060
            new sun.nio.ch.SocketDispatcher
            dup
            invokespecial sun.nio.ch.SocketDispatcher.<init>:()V
            putstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
         5: .line 1061
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.nio.channels.spi.SelectorProvider);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
         0: .line 101
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 56
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 60
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
         4: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
         5: .line 67
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         6: .line 81
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 88
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 89
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 90
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 102
            aload 0 /* this */
            iconst_1
            invokestatic sun.nio.ch.Net.socket:(Z)Ljava/io/FileDescriptor;
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        11: .line 103
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        12: .line 104
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 105
            return
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   14     1    sp  Ljava/nio/channels/spi/SelectorProvider;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      sp    

  void <init>(java.nio.channels.spi.SelectorProvider, java.io.FileDescriptor, boolean);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;Ljava/io/FileDescriptor;Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
        start local 2 // java.io.FileDescriptor fd
        start local 3 // boolean bound
         0: .line 112
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 56
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 60
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
         4: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
         5: .line 67
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         6: .line 81
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 88
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 89
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 90
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 113
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        11: .line 114
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        12: .line 115
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 116
            iload 3 /* bound */
            ifeq 15
        14: .line 117
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        15: .line 118
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.channels.spi.SelectorProvider java.io.FileDescriptor int
      StackMap stack:
            return
        end local 3 // boolean bound
        end local 2 // java.io.FileDescriptor fd
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   16     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   16     1     sp  Ljava/nio/channels/spi/SelectorProvider;
            0   16     2     fd  Ljava/io/FileDescriptor;
            0   16     3  bound  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      sp     
      fd     
      bound  

  void <init>(java.nio.channels.spi.SelectorProvider, java.io.FileDescriptor, java.net.InetSocketAddress);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
        start local 2 // java.io.FileDescriptor fd
        start local 3 // java.net.InetSocketAddress remote
         0: .line 126
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 56
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 60
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
         4: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
         5: .line 67
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         6: .line 81
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 88
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 89
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 90
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 127
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        11: .line 128
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        12: .line 129
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 130
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        14: .line 131
            aload 0 /* this */
            aload 3 /* remote */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
        15: .line 132
            return
        end local 3 // java.net.InetSocketAddress remote
        end local 2 // java.io.FileDescriptor fd
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   16     1      sp  Ljava/nio/channels/spi/SelectorProvider;
            0   16     2      fd  Ljava/io/FileDescriptor;
            0   16     3  remote  Ljava/net/InetSocketAddress;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      sp      
      fd      
      remote  

  public java.net.Socket socket();
    descriptor: ()Ljava/net/Socket;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 135
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 136
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
            ifnonnull 3
         2: .line 137
            aload 0 /* this */
            aload 0 /* this */
            invokestatic sun.nio.ch.SocketAdaptor.create:(Lsun/nio/ch/SocketChannelImpl;)Ljava/net/Socket;
            putfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
         3: .line 138
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
            aload 1
            monitorexit
         4: areturn
         5: .line 135
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  public java.net.SocketAddress getLocalAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 144
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 145
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 146
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 147
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            invokestatic sun.nio.ch.Net.getRevealedLocalAddress:(Ljava/net/InetSocketAddress;)Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         4: areturn
         5: .line 144
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
    Exceptions:
      throws java.io.IOException

  public java.net.SocketAddress getRemoteAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 153
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 154
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 155
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 156
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         4: areturn
         5: .line 153
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
    Exceptions:
      throws java.io.IOException

  public <T> java.nio.channels.SocketChannel setOption(java.net.SocketOption<T>, T);
    descriptor: (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketOption name
        start local 2 // java.lang.Object value
         0: .line 164
            aload 1 /* name */
            ifnonnull 2
         1: .line 165
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.supportedOptions:()Ljava/util/Set;
            aload 1 /* name */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 167
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "'"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "' not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         5: .line 170
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 7
         6: .line 171
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         7: .line 173
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            if_acmpne 15
         8: .line 174
            invokestatic sun.nio.ch.Net.isIPv6Available:()Z
            ifeq 10
         9: .line 175
            getstatic java.net.StandardProtocolFamily.INET6:Ljava/net/StandardProtocolFamily;
            goto 11
      StackMap locals:
      StackMap stack:
        10: getstatic java.net.StandardProtocolFamily.INET:Ljava/net/StandardProtocolFamily;
        11: .line 174
      StackMap locals:
      StackMap stack: java.net.StandardProtocolFamily
            astore 4 /* family */
        start local 4 // java.net.ProtocolFamily family
        12: .line 176
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 4 /* family */
            aload 1 /* name */
            aload 2 /* value */
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
        13: .line 177
            aload 0 /* this */
            aload 3
            monitorexit
        14: areturn
        end local 4 // java.net.ProtocolFamily family
        15: .line 180
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            if_acmpne 19
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 19
        16: .line 182
            aload 0 /* this */
            aload 2 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            putfield sun.nio.ch.SocketChannelImpl.isReuseAddress:Z
        17: .line 183
            aload 0 /* this */
            aload 3
            monitorexit
        18: areturn
        19: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.Net.UNSPEC:Ljava/net/ProtocolFamily;
            aload 1 /* name */
            aload 2 /* value */
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
        20: .line 188
            aload 0 /* this */
            aload 3
            monitorexit
        21: areturn
        22: .line 169
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        23: athrow
        end local 2 // java.lang.Object value
        end local 1 // java.net.SocketOption name
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   24     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   24     1    name  Ljava/net/SocketOption<TT;>;
            0   24     2   value  TT;
           12   15     4  family  Ljava/net/ProtocolFamily;
      Exception table:
        from    to  target  type
           5    14      22  any
          15    18      22  any
          19    21      22  any
          22    23      22  any
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/net/SocketOption<TT;>;TT;)Ljava/nio/channels/SocketChannel;
    MethodParameters:
       Name  Flags
      name   
      value  

  public <T> T getOption(java.net.SocketOption<T>);
    descriptor: (Ljava/net/SocketOption;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketOption name
         0: .line 197
            aload 1 /* name */
            ifnonnull 2
         1: .line 198
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.supportedOptions:()Ljava/util/Set;
            aload 1 /* name */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 200
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "'"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "' not supported"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 202
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         5: .line 203
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 7
         6: .line 204
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         7: .line 206
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            if_acmpne 11
         8: .line 207
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 11
         9: .line 210
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isReuseAddress:Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 2
            monitorexit
        10: areturn
        11: .line 214
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            if_acmpne 18
        12: .line 215
            invokestatic sun.nio.ch.Net.isIPv6Available:()Z
            ifeq 14
        13: .line 216
            getstatic java.net.StandardProtocolFamily.INET6:Ljava/net/StandardProtocolFamily;
            goto 15
      StackMap locals:
      StackMap stack:
        14: getstatic java.net.StandardProtocolFamily.INET:Ljava/net/StandardProtocolFamily;
        15: .line 215
      StackMap locals:
      StackMap stack: java.net.StandardProtocolFamily
            astore 3 /* family */
        start local 3 // java.net.ProtocolFamily family
        16: .line 217
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 3 /* family */
            aload 1 /* name */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
            aload 2
            monitorexit
        17: areturn
        end local 3 // java.net.ProtocolFamily family
        18: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.Net.UNSPEC:Ljava/net/ProtocolFamily;
            aload 1 /* name */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
            aload 2
            monitorexit
        19: areturn
        20: .line 202
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        21: athrow
        end local 1 // java.net.SocketOption name
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   22     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   22     1    name  Ljava/net/SocketOption<TT;>;
           16   18     3  family  Ljava/net/ProtocolFamily;
      Exception table:
        from    to  target  type
           5    10      20  any
          11    17      20  any
          18    19      20  any
          20    21      20  any
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/net/SocketOption<TT;>;)TT;
    MethodParameters:
      Name  Flags
      name  

  public final java.util.Set<java.net.SocketOption<?>> supportedOptions();
    descriptor: ()Ljava/util/Set;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 248
            getstatic sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder.defaultOptions:Ljava/util/Set;
            areturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/SocketChannelImpl;
    Signature: ()Ljava/util/Set<Ljava/net/SocketOption<*>;>;

  private boolean ensureReadOpen();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 252
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 253
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 254
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 255
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 5
         4: .line 256
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         5: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 8
         6: .line 258
            aload 1
            monitorexit
         7: iconst_0
            ireturn
         8: .line 260
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         9: iconst_1
            ireturn
        10: .line 252
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        11: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     7      10  any
           8     9      10  any
          10    11      10  any
    Exceptions:
      throws java.nio.channels.ClosedChannelException

  private void ensureWriteOpen();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 265
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 266
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 267
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 268
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 5
         4: .line 269
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 7
         6: .line 271
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         7: .line 265
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 273
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.nio.channels.ClosedChannelException

  private void readerCleanup();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 276
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 277
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 278
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 4
         3: .line 279
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
         4: .line 276
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 281
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.IOException

  private void writerCleanup();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 284
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 285
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         2: .line 286
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 4
         3: .line 287
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
         4: .line 284
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 289
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.IOException

  public int read(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 293
            aload 1 /* buf */
            ifnonnull 2
         1: .line 294
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 297
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureReadOpen:()Z
            ifne 6
         4: .line 298
            aload 2
            monitorexit
         5: iconst_m1
            ireturn
         6: .line 299
      StackMap locals: java.lang.Object
      StackMap stack:
            aconst_null
            astore 3 /* traceContext */
        start local 3 // java.lang.Object traceContext
         7: .line 300
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 9
         8: .line 301
            invokestatic sun.misc.IoTrace.socketReadBegin:()Ljava/lang/Object;
            astore 3 /* traceContext */
         9: .line 303
      StackMap locals: java.lang.Object
      StackMap stack:
            iconst_0
            istore 4 /* n */
        start local 4 // int n
        10: .line 309
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        11: .line 311
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        12: .line 312
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 36
        13: .line 320
            aload 5
            monitorexit
        14: .line 391
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        15: .line 393
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 21
        16: .line 394
            aload 3 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        17: .line 395
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            iload 4 /* n */
            ifle 18
            iload 4 /* n */
            goto 19
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int int
        18: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int int int
        19: i2l
        20: .line 394
            invokestatic sun.misc.IoTrace.socketReadEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IIJ)V
        21: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* n */
            ifgt 22
            iload 4 /* n */
            bipush -2
            if_icmpeq 22
            iconst_0
            goto 23
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        22: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        23: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        24: .line 418
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        25: .line 419
            iload 4 /* n */
            ifgt 29
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 29
        26: .line 420
            aload 8
            monitorexit
        27: aload 2
            monitorexit
        28: iconst_m1
            ireturn
        29: .line 418
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int java.lang.Object top top java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        30: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 8
            monitorexit
        32: athrow
        33: .line 423
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 34
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 34
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        34: aload 2
            monitorexit
        35: .line 320
            iconst_0
            ireturn
        36: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        37: .line 311
            aload 5
            monitorexit
        38: goto 41
      StackMap locals:
      StackMap stack: java.lang.Throwable
        39: aload 5
            monitorexit
        40: athrow
        41: .line 381
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* buf */
            ldc -1
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 4 /* n */
        42: .line 382
            iload 4 /* n */
            bipush -3
            if_icmpne 44
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 44
        43: .line 385
            goto 41
        44: .line 387
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 7
        45: .line 391
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        46: .line 393
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 52
        47: .line 394
            aload 3 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        48: .line 395
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            iload 4 /* n */
            ifle 49
            iload 4 /* n */
            goto 50
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top top int
      StackMap stack: java.lang.Object java.net.InetAddress int int
        49: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top top int
      StackMap stack: java.lang.Object java.net.InetAddress int int int
        50: i2l
        51: .line 394
            invokestatic sun.misc.IoTrace.socketReadEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IIJ)V
        52: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* n */
            ifgt 53
            iload 4 /* n */
            bipush -2
            if_icmpeq 53
            iconst_0
            goto 54
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        53: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        54: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        55: .line 418
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        56: .line 419
            iload 4 /* n */
            ifgt 60
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 60
        57: .line 420
            aload 8
            monitorexit
        58: aload 2
            monitorexit
        59: iconst_m1
            ireturn
        60: .line 418
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        61: goto 64
      StackMap locals:
      StackMap stack: java.lang.Throwable
        62: aload 8
            monitorexit
        63: athrow
        64: .line 423
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 65
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 65
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        65: .line 387
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        66: iload 7
            ireturn
        67: .line 390
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 6
        68: .line 391
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        69: .line 393
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 75
        70: .line 394
            aload 3 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        71: .line 395
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            iload 4 /* n */
            ifle 72
            iload 4 /* n */
            goto 73
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int int
        72: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int int int
        73: i2l
        74: .line 394
            invokestatic sun.misc.IoTrace.socketReadEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IIJ)V
        75: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* n */
            ifgt 76
            iload 4 /* n */
            bipush -2
            if_icmpeq 76
            iconst_0
            goto 77
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        76: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        77: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        78: .line 418
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        79: .line 419
            iload 4 /* n */
            ifgt 83
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 83
        80: .line 420
            aload 8
            monitorexit
        81: aload 2
            monitorexit
        82: iconst_m1
            ireturn
        83: .line 418
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top java.lang.Throwable top java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        84: goto 87
      StackMap locals:
      StackMap stack: java.lang.Throwable
        85: aload 8
            monitorexit
        86: athrow
        87: .line 423
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object java.lang.Object int top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 88
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 88
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        88: .line 425
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 4 // int n
        end local 3 // java.lang.Object traceContext
        89: .line 296
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        90: athrow
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   91     0          this  Lsun/nio/ch/SocketChannelImpl;
            0   91     1           buf  Ljava/nio/ByteBuffer;
            7   89     3  traceContext  Ljava/lang/Object;
           10   89     4             n  I
      Exception table:
        from    to  target  type
          25    27      31  any
          29    30      31  any
          31    32      31  any
          12    14      39  any
          36    38      39  any
          39    40      39  any
          56    58      62  any
          60    61      62  any
          62    63      62  any
          10    14      67  any
          36    45      67  any
          79    81      85  any
          83    84      85  any
          85    86      85  any
           3     5      89  any
           6    28      89  any
          29    35      89  any
          36    59      89  any
          60    66      89  any
          67    82      89  any
          83    90      89  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   

  public long read(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=13, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer[] dsts
        start local 2 // int offset
        start local 3 // int length
         0: .line 432
            iload 2 /* offset */
            iflt 1
            iload 3 /* length */
            iflt 1
            iload 2 /* offset */
            aload 1 /* dsts */
            arraylength
            iload 3 /* length */
            isub
            if_icmple 2
         1: .line 433
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 434
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 435
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureReadOpen:()Z
            ifne 6
         4: .line 436
            aload 4
            monitorexit
         5: ldc -1
            lreturn
         6: .line 437
      StackMap locals: java.lang.Object
      StackMap stack:
            lconst_0
            lstore 5 /* n */
        start local 5 // long n
         7: .line 438
            aconst_null
            astore 7 /* traceContext */
        start local 7 // java.lang.Object traceContext
         8: .line 439
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 10
         9: .line 440
            invokestatic sun.misc.IoTrace.socketReadBegin:()Ljava/lang/Object;
            astore 7 /* traceContext */
        10: .line 443
      StackMap locals: long java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        11: .line 444
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        12: .line 445
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 35
        13: .line 446
            aload 8
            monitorexit
        14: .line 457
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        15: .line 458
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 20
        16: .line 459
            aload 7 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        17: .line 460
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 18
            lload 5 /* n */
            goto 19
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int int
        18: lconst_0
        19: .line 459
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int int long
            invokestatic sun.misc.IoTrace.socketReadEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IIJ)V
        20: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 21
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 21
            iconst_0
            goto 22
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        21: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        22: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        23: .line 463
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 12
            monitorenter
        24: .line 464
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 28
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 28
        25: .line 465
            aload 12
            monitorexit
        26: aload 4
            monitorexit
        27: ldc -1
            lreturn
        28: .line 463
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object top top top java.lang.Object
      StackMap stack:
            aload 12
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 12
            monitorexit
        31: athrow
        32: .line 467
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 33
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 33
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        33: aload 4
            monitorexit
        34: .line 446
            lconst_0
            lreturn
        35: .line 447
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        36: .line 444
            aload 8
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 8
            monitorexit
        39: athrow
        40: .line 451
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;IILsun/nio/ch/NativeDispatcher;)J
            lstore 5 /* n */
        41: .line 452
            lload 5 /* n */
            ldc -3
            lcmp
            ifne 43
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 43
        42: .line 453
            goto 40
        43: .line 454
      StackMap locals:
      StackMap stack:
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 10
        44: .line 457
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        45: .line 458
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 50
        46: .line 459
            aload 7 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        47: .line 460
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 48
            lload 5 /* n */
            goto 49
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top long
      StackMap stack: java.lang.Object java.net.InetAddress int int
        48: lconst_0
        49: .line 459
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top long
      StackMap stack: java.lang.Object java.net.InetAddress int int long
            invokestatic sun.misc.IoTrace.socketReadEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IIJ)V
        50: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 51
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 51
            iconst_0
            goto 52
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        51: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        52: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        53: .line 463
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 12
            monitorenter
        54: .line 464
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 58
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 58
        55: .line 465
            aload 12
            monitorexit
        56: aload 4
            monitorexit
        57: ldc -1
            lreturn
        58: .line 463
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 12
            monitorexit
        59: goto 62
      StackMap locals:
      StackMap stack: java.lang.Throwable
        60: aload 12
            monitorexit
        61: athrow
        62: .line 467
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 63
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 63
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        63: .line 454
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        64: lload 10
            lreturn
        65: .line 456
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object
      StackMap stack: java.lang.Throwable
            astore 9
        66: .line 457
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        67: .line 458
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 72
        68: .line 459
            aload 7 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        69: .line 460
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iconst_0
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 70
            lload 5 /* n */
            goto 71
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int int
        70: lconst_0
        71: .line 459
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int int long
            invokestatic sun.misc.IoTrace.socketReadEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IIJ)V
        72: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 73
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 73
            iconst_0
            goto 74
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        73: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        74: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        75: .line 463
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 12
            monitorenter
        76: .line 464
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 80
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 80
        77: .line 465
            aload 12
            monitorexit
        78: aload 4
            monitorexit
        79: ldc -1
            lreturn
        80: .line 463
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable top top java.lang.Object
      StackMap stack:
            aload 12
            monitorexit
        81: goto 84
      StackMap locals:
      StackMap stack: java.lang.Throwable
        82: aload 12
            monitorexit
        83: athrow
        84: .line 467
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 85
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 85
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        85: .line 468
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        end local 7 // java.lang.Object traceContext
        end local 5 // long n
        86: .line 434
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        87: athrow
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   88     0          this  Lsun/nio/ch/SocketChannelImpl;
            0   88     1          dsts  [Ljava/nio/ByteBuffer;
            0   88     2        offset  I
            0   88     3        length  I
            7   86     5             n  J
            8   86     7  traceContext  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          24    26      30  any
          28    29      30  any
          30    31      30  any
          12    14      38  any
          35    37      38  any
          38    39      38  any
          54    56      60  any
          58    59      60  any
          60    61      60  any
          10    14      65  any
          35    44      65  any
          76    78      82  any
          80    81      82  any
          82    83      82  any
           3     5      86  any
           6    27      86  any
          28    34      86  any
          35    57      86  any
          58    64      86  any
          65    79      86  any
          80    87      86  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      dsts    
      offset  
      length  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 473
            aload 1 /* buf */
            ifnonnull 2
         1: .line 474
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 475
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 476
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         4: .line 477
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         5: .line 479
            invokestatic sun.misc.IoTrace.socketWriteBegin:()Ljava/lang/Object;
         6: .line 478
            astore 4 /* traceContext */
        start local 4 // java.lang.Object traceContext
         7: .line 482
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         8: .line 483
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         9: .line 484
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 30
        10: .line 485
            aload 5
            monitorexit
        11: .line 495
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        12: .line 496
            aload 4 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        13: .line 497
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iload 3 /* n */
            ifle 14
            iload 3 /* n */
            goto 15
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int
        14: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int int
        15: i2l
        16: .line 496
            invokestatic sun.misc.IoTrace.socketWriteEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IJ)V
        17: .line 498
            aload 0 /* this */
            iload 3 /* n */
            ifgt 18
            iload 3 /* n */
            bipush -2
            if_icmpeq 18
            iconst_0
            goto 19
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        18: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        19: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        20: .line 499
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        21: .line 500
            iload 3 /* n */
            ifgt 23
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 23
        22: .line 501
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        23: .line 499
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object java.lang.Object top top java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        24: goto 27
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: aload 8
            monitorexit
        26: athrow
        27: .line 503
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 28
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 28
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        28: aload 2
            monitorexit
        29: .line 485
            iconst_0
            ireturn
        30: .line 486
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        31: .line 483
            aload 5
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 5
            monitorexit
        34: athrow
        35: .line 489
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* buf */
            ldc -1
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 3 /* n */
        36: .line 490
            iload 3 /* n */
            bipush -3
            if_icmpne 38
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 38
        37: .line 491
            goto 35
        38: .line 492
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 7
        39: .line 495
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        40: .line 496
            aload 4 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        41: .line 497
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iload 3 /* n */
            ifle 42
            iload 3 /* n */
            goto 43
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top top int
      StackMap stack: java.lang.Object java.net.InetAddress int
        42: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top top int
      StackMap stack: java.lang.Object java.net.InetAddress int int
        43: i2l
        44: .line 496
            invokestatic sun.misc.IoTrace.socketWriteEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IJ)V
        45: .line 498
            aload 0 /* this */
            iload 3 /* n */
            ifgt 46
            iload 3 /* n */
            bipush -2
            if_icmpeq 46
            iconst_0
            goto 47
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        46: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        47: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        48: .line 499
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        49: .line 500
            iload 3 /* n */
            ifgt 51
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 51
        50: .line 501
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        51: .line 499
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        52: goto 55
      StackMap locals:
      StackMap stack: java.lang.Throwable
        53: aload 8
            monitorexit
        54: athrow
        55: .line 503
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 56
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 56
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        56: .line 492
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        57: iload 7
            ireturn
        58: .line 494
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack: java.lang.Throwable
            astore 6
        59: .line 495
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        60: .line 496
            aload 4 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        61: .line 497
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            iload 3 /* n */
            ifle 62
            iload 3 /* n */
            goto 63
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int
        62: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int int
        63: i2l
        64: .line 496
            invokestatic sun.misc.IoTrace.socketWriteEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IJ)V
        65: .line 498
            aload 0 /* this */
            iload 3 /* n */
            ifgt 66
            iload 3 /* n */
            bipush -2
            if_icmpeq 66
            iconst_0
            goto 67
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        66: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        67: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        68: .line 499
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        69: .line 500
            iload 3 /* n */
            ifgt 71
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 71
        70: .line 501
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        71: .line 499
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top java.lang.Throwable top java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        72: goto 75
      StackMap locals:
      StackMap stack: java.lang.Throwable
        73: aload 8
            monitorexit
        74: athrow
        75: .line 503
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 76
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 76
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        76: .line 504
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 4 // java.lang.Object traceContext
        end local 3 // int n
        77: .line 475
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        78: athrow
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   79     0          this  Lsun/nio/ch/SocketChannelImpl;
            0   79     1           buf  Ljava/nio/ByteBuffer;
            5   77     3             n  I
            7   77     4  traceContext  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          21    24      25  any
          25    26      25  any
           9    11      33  any
          30    32      33  any
          33    34      33  any
          49    52      53  any
          53    54      53  any
           7    11      58  any
          30    39      58  any
          69    72      73  any
          73    74      73  any
           3    29      77  any
          30    57      77  any
          58    78      77  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   

  public long write(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=13, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 511
            iload 2 /* offset */
            iflt 1
            iload 3 /* length */
            iflt 1
            iload 2 /* offset */
            aload 1 /* srcs */
            arraylength
            iload 3 /* length */
            isub
            if_icmple 2
         1: .line 512
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 513
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 514
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         4: .line 515
            lconst_0
            lstore 5 /* n */
        start local 5 // long n
         5: .line 517
            invokestatic sun.misc.IoTrace.socketWriteBegin:()Ljava/lang/Object;
         6: .line 516
            astore 7 /* traceContext */
        start local 7 // java.lang.Object traceContext
         7: .line 519
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         8: .line 520
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
         9: .line 521
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 29
        10: .line 522
            aload 8
            monitorexit
        11: .line 532
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        12: .line 533
            aload 7 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        13: .line 534
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 14
            lload 5 /* n */
            goto 15
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int
        14: lconst_0
        15: .line 533
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack: java.lang.Object java.net.InetAddress int long
            invokestatic sun.misc.IoTrace.socketWriteEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IJ)V
        16: .line 535
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 17
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 17
            iconst_0
            goto 18
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        17: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        18: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        19: .line 536
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 12
            monitorenter
        20: .line 537
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 22
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 22
        21: .line 538
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        22: .line 536
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object top top top java.lang.Object
      StackMap stack:
            aload 12
            monitorexit
        23: goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: aload 12
            monitorexit
        25: athrow
        26: .line 540
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 27
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        27: aload 4
            monitorexit
        28: .line 522
            lconst_0
            lreturn
        29: .line 523
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        30: .line 520
            aload 8
            monitorexit
        31: goto 34
      StackMap locals:
      StackMap stack: java.lang.Throwable
        32: aload 8
            monitorexit
        33: athrow
        34: .line 526
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;IILsun/nio/ch/NativeDispatcher;)J
            lstore 5 /* n */
        35: .line 527
            lload 5 /* n */
            ldc -3
            lcmp
            ifne 37
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 37
        36: .line 528
            goto 34
        37: .line 529
      StackMap locals:
      StackMap stack:
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 10
        38: .line 532
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        39: .line 533
            aload 7 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        40: .line 534
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 41
            lload 5 /* n */
            goto 42
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top long
      StackMap stack: java.lang.Object java.net.InetAddress int
        41: lconst_0
        42: .line 533
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top long
      StackMap stack: java.lang.Object java.net.InetAddress int long
            invokestatic sun.misc.IoTrace.socketWriteEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IJ)V
        43: .line 535
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 44
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 44
            iconst_0
            goto 45
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        44: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        45: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        46: .line 536
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 12
            monitorenter
        47: .line 537
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 49
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 49
        48: .line 538
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        49: .line 536
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 12
            monitorexit
        50: goto 53
      StackMap locals:
      StackMap stack: java.lang.Throwable
        51: aload 12
            monitorexit
        52: athrow
        53: .line 540
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 54
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 54
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        54: .line 529
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        55: lload 10
            lreturn
        56: .line 531
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object
      StackMap stack: java.lang.Throwable
            astore 9
        57: .line 532
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        58: .line 533
            aload 7 /* traceContext */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        59: .line 534
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 60
            lload 5 /* n */
            goto 61
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int
        60: lconst_0
        61: .line 533
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack: java.lang.Object java.net.InetAddress int long
            invokestatic sun.misc.IoTrace.socketWriteEnd:(Ljava/lang/Object;Ljava/net/InetAddress;IJ)V
        62: .line 535
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 63
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 63
            iconst_0
            goto 64
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        63: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        64: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        65: .line 536
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 12
            monitorenter
        66: .line 537
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 68
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 68
        67: .line 538
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        68: .line 536
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable top top java.lang.Object
      StackMap stack:
            aload 12
            monitorexit
        69: goto 72
      StackMap locals:
      StackMap stack: java.lang.Throwable
        70: aload 12
            monitorexit
        71: athrow
        72: .line 540
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 73
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 73
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        73: .line 541
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        end local 7 // java.lang.Object traceContext
        end local 5 // long n
        74: .line 513
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        75: athrow
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   76     0          this  Lsun/nio/ch/SocketChannelImpl;
            0   76     1          srcs  [Ljava/nio/ByteBuffer;
            0   76     2        offset  I
            0   76     3        length  I
            5   74     5             n  J
            7   74     7  traceContext  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          20    23      24  any
          24    25      24  any
           9    11      32  any
          29    31      32  any
          32    33      32  any
          47    50      51  any
          51    52      51  any
           7    11      56  any
          29    38      56  any
          66    69      70  any
          70    71      70  any
           3    28      74  any
          29    55      74  any
          56    75      74  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  int sendOutOfBandData(byte);
    descriptor: (B)I
    flags: (0x0000) 
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // byte b
         0: .line 547
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 548
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         2: .line 549
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         3: .line 551
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         4: .line 552
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         5: .line 553
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 21
         6: .line 554
            aload 4
            monitorexit
         7: .line 564
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
         8: .line 565
            aload 0 /* this */
            iload 3 /* n */
            ifgt 9
            iload 3 /* n */
            bipush -2
            if_icmpeq 9
            iconst_0
            goto 10
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
         9: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        10: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        11: .line 566
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        12: .line 567
            iload 3 /* n */
            ifgt 14
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 14
        13: .line 568
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        14: .line 566
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int java.lang.Object top top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 7
            monitorexit
        17: athrow
        18: .line 570
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 19
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 19
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        19: aload 2
            monitorexit
        20: .line 554
            iconst_0
            ireturn
        21: .line 555
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        22: .line 552
            aload 4
            monitorexit
        23: goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: aload 4
            monitorexit
        25: athrow
        26: .line 558
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iload 1 /* b */
            invokestatic sun.nio.ch.SocketChannelImpl.sendOutOfBandData:(Ljava/io/FileDescriptor;B)I
            istore 3 /* n */
        27: .line 559
            iload 3 /* n */
            bipush -3
            if_icmpne 29
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 29
        28: .line 560
            goto 26
        29: .line 561
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        30: .line 564
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        31: .line 565
            aload 0 /* this */
            iload 3 /* n */
            ifgt 32
            iload 3 /* n */
            bipush -2
            if_icmpeq 32
            iconst_0
            goto 33
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl
        32: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        33: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        34: .line 566
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        35: .line 567
            iload 3 /* n */
            ifgt 37
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 37
        36: .line 568
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        37: .line 566
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        38: goto 41
      StackMap locals:
      StackMap stack: java.lang.Throwable
        39: aload 7
            monitorexit
        40: athrow
        41: .line 570
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 42
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 42
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        42: .line 561
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        43: iload 6
            ireturn
        44: .line 563
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 5
        45: .line 564
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        46: .line 565
            aload 0 /* this */
            iload 3 /* n */
            ifgt 47
            iload 3 /* n */
            bipush -2
            if_icmpeq 47
            iconst_0
            goto 48
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        47: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        48: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        49: .line 566
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        50: .line 567
            iload 3 /* n */
            ifgt 52
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 52
        51: .line 568
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        52: .line 566
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int top java.lang.Throwable top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        53: goto 56
      StackMap locals:
      StackMap stack: java.lang.Throwable
        54: aload 7
            monitorexit
        55: athrow
        56: .line 570
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object int top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 57
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 57
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        57: .line 571
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 3 // int n
        58: .line 547
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        59: athrow
        end local 1 // byte b
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   60     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   60     1     b  B
            3   58     3     n  I
      Exception table:
        from    to  target  type
          12    15      16  any
          16    17      16  any
           5     7      24  any
          21    23      24  any
          24    25      24  any
          35    38      39  any
          39    40      39  any
           3     7      44  any
          21    30      44  any
          50    53      54  any
          54    55      54  any
           1    20      58  any
          21    43      58  any
          44    59      58  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     

  protected void implConfigureBlocking(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean block
         0: .line 576
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iload 1 /* block */
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         1: .line 577
            return
        end local 1 // boolean block
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lsun/nio/ch/SocketChannelImpl;
            0    2     1  block  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  

  public java.net.InetSocketAddress localAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 580
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 581
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         2: areturn
         3: .line 580
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public java.net.SocketAddress remoteAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 586
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 587
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         2: areturn
         3: .line 586
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public java.nio.channels.SocketChannel bind(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketAddress local
         0: .line 593
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 594
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 595
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 596
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 597
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 598
      StackMap locals: java.lang.Object java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 7
         6: .line 599
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         7: .line 600
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnull 9
         8: .line 601
            new java.nio.channels.AlreadyBoundException
            dup
            invokespecial java.nio.channels.AlreadyBoundException.<init>:()V
            athrow
         9: .line 602
      StackMap locals:
      StackMap stack:
            aload 1 /* local */
            ifnonnull 11
        10: .line 603
            new java.net.InetSocketAddress
            dup
            iconst_0
            invokespecial java.net.InetSocketAddress.<init>:(I)V
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 1 /* local */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
        12: .line 602
      StackMap locals:
      StackMap stack: java.net.InetSocketAddress
            astore 5 /* isa */
        start local 5 // java.net.InetSocketAddress isa
        13: .line 604
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 6 /* sm */
        start local 6 // java.lang.SecurityManager sm
        14: .line 605
            aload 6 /* sm */
            ifnull 16
        15: .line 606
            aload 6 /* sm */
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.SecurityManager.checkListen:(I)V
        16: .line 608
      StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.net.NetHooks.beforeTcpBind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        17: .line 609
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.nio.ch.Net.bind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        18: .line 610
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        end local 6 // java.lang.SecurityManager sm
        end local 5 // java.net.InetSocketAddress isa
        19: .line 595
            aload 4
            monitorexit
        20: goto 23
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
        21: aload 4
            monitorexit
        22: athrow
        23: .line 594
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        24: goto 27
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: aload 3
            monitorexit
        26: athrow
        27: .line 593
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        28: goto 31
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: aload 2
            monitorexit
        30: athrow
        31: .line 614
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // java.net.SocketAddress local
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   32     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   32     1  local  Ljava/net/SocketAddress;
           13   19     5    isa  Ljava/net/InetSocketAddress;
           14   19     6     sm  Ljava/lang/SecurityManager;
      Exception table:
        from    to  target  type
           3    20      21  any
          21    22      21  any
           2    24      25  any
          25    26      25  any
           1    28      29  any
          29    30      29  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      local  

  public boolean isConnected();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 618
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 619
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 2
            iconst_1
            goto 3
      StackMap locals: java.lang.Object
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: aload 1
            monitorexit
         4: ireturn
         5: .line 618
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  public boolean isConnectionPending();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 624
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 625
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 2
            iconst_1
            goto 3
      StackMap locals: java.lang.Object
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: aload 1
            monitorexit
         4: ireturn
         5: .line 624
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  void ensureOpenAndUnconnected();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 630
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 631
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 632
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 633
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 5
         4: .line 634
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            athrow
         5: .line 635
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 7
         6: .line 636
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         7: .line 630
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 638
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException

  public boolean connect(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=10, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketAddress sa
         0: .line 643
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 644
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 645
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndUnconnected:()V
         3: .line 646
            aload 1 /* sa */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
            astore 4 /* isa */
        start local 4 // java.net.InetSocketAddress isa
         4: .line 647
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* sm */
        start local 5 // java.lang.SecurityManager sm
         5: .line 648
            aload 5 /* sm */
            ifnull 9
         6: .line 649
            aload 5 /* sm */
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
         7: .line 650
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
         8: .line 649
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
         9: .line 651
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        10: .line 652
            iconst_0
            istore 7 /* n */
        start local 7 // int n
        11: .line 655
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        12: .line 656
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        13: .line 657
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 24
        14: .line 658
            aload 8
            monitorexit
        15: .line 682
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        16: .line 683
            aload 0 /* this */
            iload 7 /* n */
            ifgt 17
            iload 7 /* n */
            bipush -2
            if_icmpeq 17
            iconst_0
            goto 18
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        17: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        18: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        19: .line 684
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 20
            iload 7 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 20
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        20: aload 6
            monitorexit
        21: aload 3
            monitorexit
        22: aload 2
            monitorexit
        23: .line 658
            iconst_0
            ireturn
        24: .line 661
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnonnull 29
        25: .line 662
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        26: .line 663
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        27: .line 664
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
        28: .line 662
            invokestatic sun.net.NetHooks.beforeTcpConnect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        29: .line 666
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        30: .line 656
            aload 8
            monitorexit
        31: goto 34
      StackMap locals:
      StackMap stack: java.lang.Throwable
        32: aload 8
            monitorexit
        33: athrow
        34: .line 669
      StackMap locals:
      StackMap stack:
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            astore 8 /* ia */
        start local 8 // java.net.InetAddress ia
        35: .line 670
            aload 8 /* ia */
            invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
            ifeq 37
        36: .line 671
            invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
            astore 8 /* ia */
        37: .line 672
      StackMap locals: java.net.InetAddress
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        38: .line 673
            aload 8 /* ia */
        39: .line 674
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
        40: .line 672
            invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
            istore 7 /* n */
        41: .line 675
            iload 7 /* n */
            bipush -3
            if_icmpne 51
        42: .line 676
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 51
        end local 8 // java.net.InetAddress ia
        43: .line 668
            goto 34
        44: .line 681
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 9
        45: .line 682
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        46: .line 683
            aload 0 /* this */
            iload 7 /* n */
            ifgt 47
            iload 7 /* n */
            bipush -2
            if_icmpeq 47
            iconst_0
            goto 48
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        47: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        48: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        49: .line 684
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 50
            iload 7 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 50
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        50: .line 685
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        51: .line 682
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        52: .line 683
            aload 0 /* this */
            iload 7 /* n */
            ifgt 53
            iload 7 /* n */
            bipush -2
            if_icmpeq 53
            iconst_0
            goto 54
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        53: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        54: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        55: .line 684
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 59
            iload 7 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 59
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        56: .line 686
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 8 /* x */
        start local 8 // java.io.IOException x
        57: .line 690
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        58: .line 691
            aload 8 /* x */
            athrow
        end local 8 // java.io.IOException x
        59: .line 693
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
        60: .line 694
            aload 0 /* this */
            aload 4 /* isa */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
        61: .line 695
            iload 7 /* n */
            ifle 70
        62: .line 699
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        63: .line 700
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 65
        64: .line 701
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        65: .line 702
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 8
            monitorexit
        66: aload 6
            monitorexit
        67: aload 3
            monitorexit
        68: aload 2
            monitorexit
        69: iconst_1
            ireturn
        70: .line 706
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifne 72
        71: .line 707
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.state:I
            goto 73
        72: .line 709
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 73
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        73: .line 693
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        74: goto 77
      StackMap locals:
      StackMap stack: java.lang.Throwable
        75: aload 8
            monitorexit
        76: athrow
        end local 7 // int n
        77: .line 651
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        78: goto 81
      StackMap locals:
      StackMap stack: java.lang.Throwable
        79: aload 6
            monitorexit
        80: athrow
        81: .line 712
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        82: aload 2
            monitorexit
        83: iconst_0
            ireturn
        end local 5 // java.lang.SecurityManager sm
        end local 4 // java.net.InetSocketAddress isa
        84: .line 644
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        85: athrow
        86: .line 643
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        87: athrow
        end local 1 // java.net.SocketAddress sa
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   88     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   88     1    sa  Ljava/net/SocketAddress;
            4   84     4   isa  Ljava/net/InetSocketAddress;
            5   84     5    sm  Ljava/lang/SecurityManager;
           11   77     7     n  I
           35   43     8    ia  Ljava/net/InetAddress;
           57   59     8     x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          13    15      32  any
          24    31      32  any
          32    33      32  any
          11    15      44  any
          24    44      44  any
          11    20      56  Class java.io.IOException
          24    56      56  Class java.io.IOException
          60    66      75  any
          70    74      75  any
          75    76      75  any
          10    21      79  any
          24    67      79  any
          70    78      79  any
          79    80      79  any
           2    22      84  any
          24    68      84  any
          70    82      84  any
          84    85      84  any
           1    23      86  any
          24    69      86  any
          70    83      86  any
          84    87      86  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      sa    

  public boolean finishConnect();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 718
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 719
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 720
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 721
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 722
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 723
      StackMap locals: java.lang.Object java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 10
         6: .line 724
            aload 3
            monitorexit
         7: aload 2
            monitorexit
         8: aload 1
            monitorexit
         9: iconst_1
            ireturn
        10: .line 725
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpeq 12
        11: .line 726
            new java.nio.channels.NoConnectionPendingException
            dup
            invokespecial java.nio.channels.NoConnectionPendingException.<init>:()V
            athrow
        12: .line 720
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        13: goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: aload 3
            monitorexit
        15: athrow
        16: .line 728
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* n */
        start local 3 // int n
        17: .line 731
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        18: .line 732
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        19: .line 733
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        20: .line 734
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 39
        21: .line 735
            aload 5
            monitorexit
        22: aload 4
            monitorexit
        23: .line 765
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        24: .line 766
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        25: .line 767
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 28
        26: .line 768
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        27: .line 774
            iconst_0
            istore 3 /* n */
        28: .line 765
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object java.lang.Object top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 7
            monitorexit
        31: athrow
        32: .line 777
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            ifgt 33
            iload 3 /* n */
            bipush -2
            if_icmpeq 33
            iconst_0
            goto 34
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        33: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        34: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        35: .line 778
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 36
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 36
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        36: aload 2
            monitorexit
        37: aload 1
            monitorexit
        38: .line 735
            iconst_0
            ireturn
        39: .line 737
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        40: .line 733
            aload 5
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 5
            monitorexit
        43: athrow
        44: .line 739
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifne 51
        45: .line 741
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
        46: .line 742
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        47: .line 741
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
        48: .line 743
            iload 3 /* n */
            bipush -3
            if_icmpne 59
        49: .line 744
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 59
        50: .line 740
            goto 45
        51: .line 750
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
        52: .line 751
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        53: .line 750
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
        54: .line 752
            iload 3 /* n */
            ifne 56
        55: .line 755
            goto 51
        56: .line 757
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            bipush -3
            if_icmpne 59
        57: .line 758
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 59
        58: .line 749
            goto 51
        59: .line 732
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        60: goto 78
      StackMap locals:
      StackMap stack: java.lang.Throwable
        61: aload 4
            monitorexit
        62: athrow
        63: .line 764
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 6
        64: .line 765
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        65: .line 766
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        66: .line 767
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 69
        67: .line 768
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        68: .line 774
            iconst_0
            istore 3 /* n */
        69: .line 765
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int top top java.lang.Throwable java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        70: goto 73
      StackMap locals:
      StackMap stack: java.lang.Throwable
        71: aload 7
            monitorexit
        72: athrow
        73: .line 777
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            ifgt 74
            iload 3 /* n */
            bipush -2
            if_icmpeq 74
            iconst_0
            goto 75
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        74: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int top top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        75: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        76: .line 778
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 77
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 77
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        77: .line 779
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        78: .line 765
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        79: .line 766
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        80: .line 767
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 83
        81: .line 768
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        82: .line 774
            iconst_0
            istore 3 /* n */
        83: .line 765
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int top top top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        84: goto 87
      StackMap locals:
      StackMap stack: java.lang.Throwable
        85: aload 7
            monitorexit
        86: athrow
        87: .line 777
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            ifgt 88
            iload 3 /* n */
            bipush -2
            if_icmpeq 88
            iconst_0
            goto 89
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        88: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        89: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        90: .line 778
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 94
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 94
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        91: .line 780
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 4 /* x */
        start local 4 // java.io.IOException x
        92: .line 784
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        93: .line 785
            aload 4 /* x */
            athrow
        end local 4 // java.io.IOException x
        94: .line 787
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifle 106
        95: .line 788
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        96: .line 789
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        97: .line 790
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 99
        98: .line 791
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        99: .line 788
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4
            monitorexit
       100: goto 103
      StackMap locals:
      StackMap stack: java.lang.Throwable
       101: aload 4
            monitorexit
       102: athrow
       103: .line 793
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       104: aload 1
            monitorexit
       105: iconst_1
            ireturn
       106: .line 795
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       107: aload 1
            monitorexit
       108: iconst_0
            ireturn
        end local 3 // int n
       109: .line 719
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
       110: athrow
       111: .line 718
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
       112: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0  113     0  this  Lsun/nio/ch/SocketChannelImpl;
           17  109     3     n  I
           92   94     4     x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     7      14  any
          10    13      14  any
          14    15      14  any
          24    29      30  any
          30    31      30  any
          20    22      42  any
          39    41      42  any
          42    43      42  any
          19    23      61  any
          39    60      61  any
          61    62      61  any
          17    23      63  any
          39    63      63  any
          65    70      71  any
          71    72      71  any
          79    84      85  any
          85    86      85  any
          17    36      91  Class java.io.IOException
          39    91      91  Class java.io.IOException
          96   100     101  any
         101   102     101  any
           2     8     109  any
          10    37     109  any
          39   104     109  any
         106   107     109  any
         109   110     109  any
           1     9     111  any
          10    38     111  any
          39   105     111  any
         106   108     111  any
         109   112     111  any
    Exceptions:
      throws java.io.IOException

  public java.nio.channels.SocketChannel shutdownInput();
    descriptor: ()Ljava/nio/channels/SocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 802
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 803
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 804
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 805
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 5
         4: .line 806
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         5: .line 807
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifeq 10
         6: .line 808
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
            invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
         7: .line 809
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifeq 9
         8: .line 810
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         9: .line 811
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
        10: .line 813
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            monitorexit
        11: areturn
        12: .line 802
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        13: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    Exceptions:
      throws java.io.IOException

  public java.nio.channels.SocketChannel shutdownOutput();
    descriptor: ()Ljava/nio/channels/SocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 819
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 820
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 821
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 822
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 5
         4: .line 823
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         5: .line 824
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifeq 10
         6: .line 825
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
            invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
         7: .line 826
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifeq 9
         8: .line 827
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         9: .line 828
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
        10: .line 830
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            monitorexit
        11: areturn
        12: .line 819
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        13: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    Exceptions:
      throws java.io.IOException

  public boolean isInputOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 835
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 836
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 835
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public boolean isOutputOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 841
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 842
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 841
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  protected void implCloseSelectableChannel();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 852
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 853
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         2: .line 854
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         3: .line 861
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_4
            if_icmpeq 5
         4: .line 862
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.preClose:(Ljava/io/FileDescriptor;)V
         5: .line 868
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifeq 7
         6: .line 869
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         7: .line 871
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifeq 9
         8: .line 872
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         9: .line 884
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isRegistered:()Z
            ifne 11
        10: .line 885
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        11: .line 852
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 1
            monitorexit
        14: athrow
        15: .line 887
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1    12      13  any
          13    14      13  any
    Exceptions:
      throws java.io.IOException

  public void kill();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 890
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 891
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_4
            if_icmpne 4
         2: .line 892
            aload 1
            monitorexit
         3: return
         4: .line 893
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_m1
            if_icmpne 8
         5: .line 894
            aload 0 /* this */
            iconst_4
            putfield sun.nio.ch.SocketChannelImpl.state:I
         6: .line 895
            aload 1
            monitorexit
         7: return
         8: .line 897
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 10
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 9
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isRegistered:()Z
            ifeq 10
      StackMap locals:
      StackMap stack:
         9: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 902
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifne 14
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifne 14
        11: .line 903
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
        12: .line 904
            aload 0 /* this */
            iconst_4
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 905
            goto 15
        14: .line 906
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_3
            putfield sun.nio.ch.SocketChannelImpl.state:I
        15: .line 890
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        16: goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: aload 1
            monitorexit
        18: athrow
        19: .line 909
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     3      17  any
           4     7      17  any
           8    16      17  any
          17    18      17  any
    Exceptions:
      throws java.io.IOException

  public boolean translateReadyOps(int, int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (IILsun/nio/ch/SelectionKeyImpl;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // int initialOps
        start local 3 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 916
            aload 3 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioInterestOps:()I
            istore 4 /* intOps */
        start local 4 // int intOps
         1: .line 917
            aload 3 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:()I
            istore 5 /* oldOps */
        start local 5 // int oldOps
         2: .line 918
            iload 2 /* initialOps */
            istore 6 /* newOps */
        start local 6 // int newOps
         3: .line 920
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLNVAL:S
            iand
            ifeq 5
         4: .line 924
            iconst_0
            ireturn
         5: .line 927
      StackMap locals: int int int
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLERR:S
            getstatic sun.nio.ch.Net.POLLHUP:S
            ior
            iand
            ifeq 11
         6: .line 928
            iload 4 /* intOps */
            istore 6 /* newOps */
         7: .line 929
            aload 3 /* sk */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
         8: .line 932
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
         9: .line 933
            iload 6 /* newOps */
            iload 5 /* oldOps */
            iconst_m1
            ixor
            iand
            ifeq 10
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_0
            ireturn
        11: .line 936
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLIN:S
            iand
            ifeq 15
        12: .line 937
            iload 4 /* intOps */
            iconst_1
            iand
            ifeq 15
        13: .line 938
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 15
        14: .line 939
            iload 6 /* newOps */
            iconst_1
            ior
            istore 6 /* newOps */
        15: .line 941
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLCONN:S
            iand
            ifeq 20
        16: .line 942
            iload 4 /* intOps */
            bipush 8
            iand
            ifeq 20
        17: .line 943
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            ifeq 18
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 20
        18: .line 944
      StackMap locals:
      StackMap stack:
            iload 6 /* newOps */
            bipush 8
            ior
            istore 6 /* newOps */
        19: .line 945
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        20: .line 948
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLOUT:S
            iand
            ifeq 24
        21: .line 949
            iload 4 /* intOps */
            iconst_4
            iand
            ifeq 24
        22: .line 950
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 24
        23: .line 951
            iload 6 /* newOps */
            iconst_4
            ior
            istore 6 /* newOps */
        24: .line 953
      StackMap locals:
      StackMap stack:
            aload 3 /* sk */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
        25: .line 954
            iload 6 /* newOps */
            iload 5 /* oldOps */
            iconst_m1
            ixor
            iand
            ifeq 26
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        26: iconst_0
            ireturn
        end local 6 // int newOps
        end local 5 // int oldOps
        end local 4 // int intOps
        end local 3 // sun.nio.ch.SelectionKeyImpl sk
        end local 2 // int initialOps
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Lsun/nio/ch/SocketChannelImpl;
            0   27     1         ops  I
            0   27     2  initialOps  I
            0   27     3          sk  Lsun/nio/ch/SelectionKeyImpl;
            1   27     4      intOps  I
            2   27     5      oldOps  I
            3   27     6      newOps  I
    MethodParameters:
            Name  Flags
      ops         
      initialOps  
      sk          

  public boolean translateAndUpdateReadyOps(int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (ILsun/nio/ch/SelectionKeyImpl;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 958
            aload 0 /* this */
            iload 1 /* ops */
            aload 2 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:()I
            aload 2 /* sk */
            invokevirtual sun.nio.ch.SocketChannelImpl.translateReadyOps:(IILsun/nio/ch/SelectionKeyImpl;)Z
            ireturn
        end local 2 // sun.nio.ch.SelectionKeyImpl sk
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/SocketChannelImpl;
            0    1     1   ops  I
            0    1     2    sk  Lsun/nio/ch/SelectionKeyImpl;
    MethodParameters:
      Name  Flags
      ops   
      sk    

  public boolean translateAndSetReadyOps(int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (ILsun/nio/ch/SelectionKeyImpl;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 962
            aload 0 /* this */
            iload 1 /* ops */
            iconst_0
            aload 2 /* sk */
            invokevirtual sun.nio.ch.SocketChannelImpl.translateReadyOps:(IILsun/nio/ch/SelectionKeyImpl;)Z
            ireturn
        end local 2 // sun.nio.ch.SelectionKeyImpl sk
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/SocketChannelImpl;
            0    1     1   ops  I
            0    1     2    sk  Lsun/nio/ch/SelectionKeyImpl;
    MethodParameters:
      Name  Flags
      ops   
      sk    

  int poll(int, long);
    descriptor: (IJ)I
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int events
        start local 2 // long timeout
         0: .line 967
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifeq 1
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifeq 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 969
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 970
            iconst_0
            istore 5 /* n */
        start local 5 // int n
         4: .line 972
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         5: .line 973
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
         6: .line 974
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 13
         7: .line 975
            aload 6
            monitorexit
         8: .line 980
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
         9: .line 981
            aload 0 /* this */
            iload 5 /* n */
            ifle 10
            iconst_1
            goto 11
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        10: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        11: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
            aload 4
            monitorexit
        12: .line 975
            iconst_0
            ireturn
        13: .line 976
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        14: .line 973
            aload 6
            monitorexit
        15: goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: aload 6
            monitorexit
        17: athrow
        18: .line 978
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iload 1 /* events */
            lload 2 /* timeout */
            invokestatic sun.nio.ch.Net.poll:(Ljava/io/FileDescriptor;IJ)I
            istore 5 /* n */
        19: .line 979
            goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 7
        21: .line 980
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        22: .line 981
            aload 0 /* this */
            iload 5 /* n */
            ifle 23
            iconst_1
            goto 24
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        23: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        24: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        25: .line 982
            aload 7
            athrow
        26: .line 980
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        27: .line 981
            aload 0 /* this */
            iload 5 /* n */
            ifle 28
            iconst_1
            goto 29
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        28: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        29: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        30: .line 983
            iload 5 /* n */
            aload 4
            monitorexit
        31: ireturn
        end local 5 // int n
        32: .line 969
      StackMap locals: sun.nio.ch.SocketChannelImpl int long java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        33: athrow
        end local 2 // long timeout
        end local 1 // int events
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   34     0     this  Lsun/nio/ch/SocketChannelImpl;
            0   34     1   events  I
            0   34     2  timeout  J
            4   32     5        n  I
      Exception table:
        from    to  target  type
           6     8      16  any
          13    15      16  any
          16    17      16  any
           4     8      20  any
          13    20      20  any
           3    12      32  any
          13    31      32  any
          32    33      32  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      events   
      timeout  

  public void translateAndSetInterestOps(int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (ILsun/nio/ch/SelectionKeyImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 991
            iconst_0
            istore 3 /* newOps */
        start local 3 // int newOps
         1: .line 992
            iload 1 /* ops */
            iconst_1
            iand
            ifeq 3
         2: .line 993
            iload 3 /* newOps */
            getstatic sun.nio.ch.Net.POLLIN:S
            ior
            istore 3 /* newOps */
         3: .line 994
      StackMap locals: int
      StackMap stack:
            iload 1 /* ops */
            iconst_4
            iand
            ifeq 5
         4: .line 995
            iload 3 /* newOps */
            getstatic sun.nio.ch.Net.POLLOUT:S
            ior
            istore 3 /* newOps */
         5: .line 996
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            bipush 8
            iand
            ifeq 7
         6: .line 997
            iload 3 /* newOps */
            getstatic sun.nio.ch.Net.POLLCONN:S
            ior
            istore 3 /* newOps */
         7: .line 998
      StackMap locals:
      StackMap stack:
            aload 2 /* sk */
            getfield sun.nio.ch.SelectionKeyImpl.selector:Lsun/nio/ch/SelectorImpl;
            aload 2 /* sk */
            iload 3 /* newOps */
            invokevirtual sun.nio.ch.SelectorImpl.putEventOps:(Lsun/nio/ch/SelectionKeyImpl;I)V
         8: .line 999
            return
        end local 3 // int newOps
        end local 2 // sun.nio.ch.SelectionKeyImpl sk
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lsun/nio/ch/SocketChannelImpl;
            0    9     1     ops  I
            0    9     2      sk  Lsun/nio/ch/SelectionKeyImpl;
            1    9     3  newOps  I
    MethodParameters:
      Name  Flags
      ops   
      sk    

  public java.io.FileDescriptor getFD();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 1002
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            areturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/SocketChannelImpl;

  public int getFDVal();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 1006
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fdVal:I
            ireturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/SocketChannelImpl;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 1011
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuffer sb
         1: .line 1012
            aload 1 /* sb */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         2: .line 1013
            aload 1 /* sb */
            bipush 91
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         3: .line 1014
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 1015
            aload 1 /* sb */
            ldc "closed"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
            goto 27
         5: .line 1017
      StackMap locals: java.lang.StringBuffer
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         6: .line 1018
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            tableswitch { // 0 - 2
                    0: 7
                    1: 9
                    2: 11
              default: 16
          }
         7: .line 1020
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* sb */
            ldc "unconnected"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         8: .line 1021
            goto 16
         9: .line 1023
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connection-pending"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        10: .line 1024
            goto 16
        11: .line 1026
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connected"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        12: .line 1027
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 14
        13: .line 1028
            aload 1 /* sb */
            ldc " ishut"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        14: .line 1029
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 1030
            aload 1 /* sb */
            ldc " oshut"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        16: .line 1033
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.localAddress:()Ljava/net/InetSocketAddress;
            astore 3 /* addr */
        start local 3 // java.net.InetSocketAddress addr
        17: .line 1034
            aload 3 /* addr */
            ifnull 20
        18: .line 1035
            aload 1 /* sb */
            ldc " local="
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        19: .line 1036
            aload 1 /* sb */
            aload 3 /* addr */
            invokestatic sun.nio.ch.Net.getRevealedLocalAddressAsString:(Ljava/net/InetSocketAddress;)Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        20: .line 1038
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/SocketAddress;
            ifnull 23
        21: .line 1039
            aload 1 /* sb */
            ldc " remote="
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        22: .line 1040
            aload 1 /* sb */
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/SocketAddress;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        end local 3 // java.net.InetSocketAddress addr
        23: .line 1017
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        24: goto 27
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: aload 2
            monitorexit
        26: athrow
        27: .line 1044
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        28: .line 1045
            aload 1 /* sb */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuffer sb
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   29     0  this  Lsun/nio/ch/SocketChannelImpl;
            1   29     1    sb  Ljava/lang/StringBuffer;
           17   23     3  addr  Ljava/net/InetSocketAddress;
      Exception table:
        from    to  target  type
           6    24      25  any
          25    26      25  any

  private static native int checkConnect(java.io.FileDescriptor, boolean, boolean);
    descriptor: (Ljava/io/FileDescriptor;ZZ)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      block  
      ready  

  private static native int sendOutOfBandData(java.io.FileDescriptor, byte);
    descriptor: (Ljava/io/FileDescriptor;B)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      data  

  public java.nio.channels.NetworkChannel bind(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Ljava/nio/channels/NetworkChannel;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual sun.nio.ch.SocketChannelImpl.bind:(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  public java.nio.channels.NetworkChannel setOption(java.net.SocketOption, java.lang.Object);
    descriptor: (Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/NetworkChannel;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast java.net.SocketOption
            aload 2
            checkcast java.lang.Object
            invokevirtual sun.nio.ch.SocketChannelImpl.setOption:(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException
}
SourceFile: "SocketChannelImpl.java"
NestMembers:
  sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder
InnerClasses:
  private DefaultOptionsHolder = sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder of sun.nio.ch.SocketChannelImpl