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 final java.util.concurrent.locks.ReentrantLock readLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.locks.ReentrantLock writeLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private volatile boolean isInputClosed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean isOutputClosed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

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

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

  private static final int ST_CONNECTIONPENDING;
    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_CLOSING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

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

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

  private volatile int state;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private long readerThread;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long writerThread;
    descriptor: J
    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 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 64
            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 1127
            invokestatic sun.nio.ch.IOUtil.load:()V
         4: .line 1128
            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 1129
            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 120
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 76
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
         2: .line 79
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
         3: .line 83
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         4: .line 121
            aload 0 /* this */
            iconst_1
            invokestatic sun.nio.ch.Net.socket:(Z)Ljava/io/FileDescriptor;
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
         5: .line 122
            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
         6: .line 123
            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    7     0  this  Lsun/nio/ch/SocketChannelImpl;
            0    7     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=5, 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 128
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 76
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
         2: .line 79
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
         3: .line 83
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         4: .line 129
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
         5: .line 130
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
         6: .line 131
            iload 3 /* bound */
            ifeq 13
         7: .line 132
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         8: .line 133
            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;
         9: .line 132
            aload 4
            monitorexit
        10: goto 13
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.channels.spi.SelectorProvider java.io.FileDescriptor int java.lang.Object
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        13: .line 136
      StackMap locals:
      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   14     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   14     1     sp  Ljava/nio/channels/spi/SelectorProvider;
            0   14     2     fd  Ljava/io/FileDescriptor;
            0   14     3  bound  Z
      Exception table:
        from    to  target  type
           8    10      11  any
          11    12      11  any
    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=5, 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 isa
         0: .line 143
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 76
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
         2: .line 79
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
         3: .line 83
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         4: .line 144
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
         5: .line 145
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
         6: .line 146
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         7: .line 147
            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;
         8: .line 148
            aload 0 /* this */
            aload 3 /* isa */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
         9: .line 149
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        10: .line 146
            aload 4
            monitorexit
        11: goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.channels.spi.SelectorProvider java.io.FileDescriptor java.net.InetSocketAddress java.lang.Object
      StackMap stack: java.lang.Throwable
        12: aload 4
            monitorexit
        13: athrow
        14: .line 151
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.net.InetSocketAddress isa
        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   15     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   15     1    sp  Ljava/nio/channels/spi/SelectorProvider;
            0   15     2    fd  Ljava/io/FileDescriptor;
            0   15     3   isa  Ljava/net/InetSocketAddress;
      Exception table:
        from    to  target  type
           7    11      12  any
          12    13      12  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      sp    
      fd    
      isa   

  private void ensureOpen();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 159
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 2
         1: .line 160
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         2: .line 161
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/nio/ch/SocketChannelImpl;
    Exceptions:
      throws java.nio.channels.ClosedChannelException

  private void ensureOpenAndConnected();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 176
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            istore 1 /* state */
        start local 1 // int state
         1: .line 177
            iload 1 /* state */
            iconst_2
            if_icmpge 3
         2: .line 178
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         3: .line 179
      StackMap locals: int
      StackMap stack:
            iload 1 /* state */
            iconst_2
            if_icmple 5
         4: .line 180
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 182
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int state
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/nio/ch/SocketChannelImpl;
            1    6     1  state  I
    Exceptions:
      throws java.nio.channels.ClosedChannelException

  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 186
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 187
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
            ifnonnull 3
         2: .line 188
            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 189
      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 186
      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 195
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 196
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         2: .line 197
            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
         3: areturn
         4: .line 195
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         5: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  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 203
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 204
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         2: .line 205
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         3: areturn
         4: .line 203
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         5: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  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 213
            aload 1 /* name */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 214
            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 3
         2: .line 215
            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
         3: .line 217
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         4: .line 218
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         5: .line 220
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            if_acmpne 13
         6: .line 221
            invokestatic sun.nio.ch.Net.isIPv6Available:()Z
            ifeq 8
         7: .line 222
            getstatic java.net.StandardProtocolFamily.INET6:Ljava/net/StandardProtocolFamily;
            goto 9
      StackMap locals: java.lang.Object
      StackMap stack:
         8: getstatic java.net.StandardProtocolFamily.INET:Ljava/net/StandardProtocolFamily;
         9: .line 221
      StackMap locals:
      StackMap stack: java.net.StandardProtocolFamily
            astore 4 /* family */
        start local 4 // java.net.ProtocolFamily family
        10: .line 223
            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
        11: .line 224
            aload 0 /* this */
            aload 3
            monitorexit
        12: areturn
        end local 4 // java.net.ProtocolFamily family
        13: .line 227
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            if_acmpne 17
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 17
        14: .line 229
            aload 0 /* this */
            aload 2 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            putfield sun.nio.ch.SocketChannelImpl.isReuseAddress:Z
        15: .line 230
            aload 0 /* this */
            aload 3
            monitorexit
        16: areturn
        17: .line 234
      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
        18: .line 235
            aload 0 /* this */
            aload 3
            monitorexit
        19: areturn
        20: .line 217
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        21: 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   22     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   22     1    name  Ljava/net/SocketOption<TT;>;
            0   22     2   value  TT;
           10   13     4  family  Ljava/net/ProtocolFamily;
      Exception table:
        from    to  target  type
           4    12      20  any
          13    16      20  any
          17    19      20  any
          20    21      20  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 244
            aload 1 /* name */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 245
            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 3
         2: .line 246
            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
         3: .line 248
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 249
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         5: .line 251
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            if_acmpne 8
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 8
         6: .line 253
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isReuseAddress:Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 2
            monitorexit
         7: areturn
         8: .line 257
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* name */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            if_acmpne 15
         9: .line 258
            invokestatic sun.nio.ch.Net.isIPv6Available:()Z
            ifeq 11
        10: .line 259
            getstatic java.net.StandardProtocolFamily.INET6:Ljava/net/StandardProtocolFamily;
            goto 12
      StackMap locals:
      StackMap stack:
        11: getstatic java.net.StandardProtocolFamily.INET:Ljava/net/StandardProtocolFamily;
        12: .line 258
      StackMap locals:
      StackMap stack: java.net.StandardProtocolFamily
            astore 3 /* family */
        start local 3 // java.net.ProtocolFamily family
        13: .line 260
            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
        14: areturn
        end local 3 // java.net.ProtocolFamily family
        15: .line 264
      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
        16: areturn
        17: .line 248
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        18: athrow
        end local 1 // java.net.SocketOption name
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   19     1    name  Ljava/net/SocketOption<TT;>;
           13   15     3  family  Ljava/net/ProtocolFamily;
      Exception table:
        from    to  target  type
           4     7      17  any
           8    14      17  any
          15    16      17  any
          17    18      17  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 292
            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 void beginRead(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
         0: .line 302
            iload 1 /* blocking */
            ifeq 9
         1: .line 304
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         2: .line 306
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 307
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndConnected:()V
         4: .line 309
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         5: .line 306
            aload 2
            monitorexit
         6: goto 10
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object
      StackMap stack: java.lang.Throwable
         7: aload 2
            monitorexit
         8: athrow
         9: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndConnected:()V
        10: .line 314
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   11     1  blocking  Z
      Exception table:
        from    to  target  type
           3     6       7  any
           7     8       7  any
    Exceptions:
      throws java.nio.channels.ClosedChannelException
    MethodParameters:
          Name  Flags
      blocking  

  private void endRead(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
        start local 2 // boolean completed
         0: .line 325
            iload 1 /* blocking */
            ifeq 10
         1: .line 326
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 327
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         3: .line 329
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 5
         4: .line 330
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         5: .line 326
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 3
            monitorexit
         8: athrow
         9: .line 334
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* completed */
            invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        10: .line 336
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean completed
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lsun/nio/ch/SocketChannelImpl;
            0   11     1   blocking  Z
            0   11     2  completed  Z
      Exception table:
        from    to  target  type
           2     6       7  any
           7     8       7  any
    Exceptions:
      throws java.nio.channels.AsynchronousCloseException
    MethodParameters:
           Name  Flags
      blocking   
      completed  

  public int read(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 340
            aload 1 /* buf */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 342
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 344
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 2 /* blocking */
        start local 2 // boolean blocking
         3: .line 345
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         4: .line 347
            aload 0 /* this */
            iload 2 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginRead:(Z)V
         5: .line 350
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 14
         6: .line 361
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 7
            iconst_1
            goto 8
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
         7: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
         8: invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
         9: .line 362
            iload 3 /* n */
            ifgt 12
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 12
        10: .line 367
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        11: .line 363
            iconst_m1
            ireturn
        12: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        13: .line 351
            iconst_m1
            ireturn
        14: .line 353
      StackMap locals:
      StackMap stack:
            iload 2 /* blocking */
            ifeq 18
        15: .line 355
      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 3 /* n */
        16: .line 356
            iload 3 /* n */
            bipush -3
            if_icmpne 28
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 15
        17: .line 357
            goto 28
        18: .line 358
      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 3 /* n */
        19: .line 360
            goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 4
        21: .line 361
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 22
            iconst_1
            goto 23
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        22: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        23: invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
        24: .line 362
            iload 3 /* n */
            ifgt 27
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 27
        25: .line 367
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        26: .line 363
            iconst_m1
            ireturn
        27: .line 364
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        28: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 29
            iconst_1
            goto 30
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        29: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        30: invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
        31: .line 362
            iload 3 /* n */
            ifgt 34
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 34
        32: .line 367
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        33: .line 363
            iconst_m1
            ireturn
        34: .line 365
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        35: .line 367
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        36: .line 365
            iload 6
            ireturn
        end local 3 // int n
        end local 2 // boolean blocking
        37: .line 366
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer
      StackMap stack: java.lang.Throwable
            astore 5
        38: .line 367
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        39: .line 368
            aload 5
            athrow
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   40     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   40     1       buf  Ljava/nio/ByteBuffer;
            3   37     2  blocking  Z
            4   37     3         n  I
      Exception table:
        from    to  target  type
           4     6      20  any
          14    20      20  any
           2    10      37  any
          14    25      37  any
          27    32      37  any
          34    35      37  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=6, locals=11, 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 375
            iload 2 /* offset */
            iload 3 /* length */
            aload 1 /* dsts */
            arraylength
            invokestatic java.util.Objects.checkFromIndexSize:(III)I
            pop
         1: .line 377
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 379
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 4 /* blocking */
        start local 4 // boolean blocking
         3: .line 380
            lconst_0
            lstore 5 /* n */
        start local 5 // long n
         4: .line 382
            aload 0 /* this */
            iload 4 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginRead:(Z)V
         5: .line 385
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 14
         6: .line 396
            aload 0 /* this */
            iload 4 /* blocking */
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 7
            iconst_1
            goto 8
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
         7: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
         8: invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
         9: .line 397
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 12
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 12
        10: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        11: .line 398
            ldc -1
            lreturn
        12: .line 402
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        13: .line 386
            ldc -1
            lreturn
        14: .line 388
      StackMap locals:
      StackMap stack:
            iload 4 /* blocking */
            ifeq 18
        15: .line 390
      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 */
        16: .line 391
            lload 5 /* n */
            ldc -3
            lcmp
            ifne 28
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 15
        17: .line 392
            goto 28
        18: .line 393
      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 */
        19: .line 395
            goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 7
        21: .line 396
            aload 0 /* this */
            iload 4 /* blocking */
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 22
            iconst_1
            goto 23
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        22: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        23: invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
        24: .line 397
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 27
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 27
        25: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        26: .line 398
            ldc -1
            lreturn
        27: .line 399
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        28: .line 396
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* blocking */
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 29
            iconst_1
            goto 30
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        29: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        30: invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
        31: .line 397
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 34
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 34
        32: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        33: .line 398
            ldc -1
            lreturn
        34: .line 400
      StackMap locals:
      StackMap stack:
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 9
        35: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        36: .line 400
            lload 9
            lreturn
        end local 5 // long n
        end local 4 // boolean blocking
        37: .line 401
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int
      StackMap stack: java.lang.Throwable
            astore 8
        38: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        39: .line 403
            aload 8
            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   40     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   40     1      dsts  [Ljava/nio/ByteBuffer;
            0   40     2    offset  I
            0   40     3    length  I
            3   37     4  blocking  Z
            4   37     5         n  J
      Exception table:
        from    to  target  type
           4     6      20  any
          14    20      20  any
           2    10      37  any
          14    25      37  any
          27    32      37  any
          34    35      37  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      dsts    
      offset  
      length  

  private void beginWrite(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
         0: .line 413
            iload 1 /* blocking */
            ifeq 11
         1: .line 415
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         2: .line 417
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 418
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndConnected:()V
         4: .line 419
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 6
         5: .line 420
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         6: .line 422
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         7: .line 417
            aload 2
            monitorexit
         8: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndConnected:()V
        12: .line 427
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   13     1  blocking  Z
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any
    Exceptions:
      throws java.nio.channels.ClosedChannelException
    MethodParameters:
          Name  Flags
      blocking  

  private void endWrite(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
        start local 2 // boolean completed
         0: .line 438
            iload 1 /* blocking */
            ifeq 10
         1: .line 439
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 440
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 442
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 5
         4: .line 443
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         5: .line 439
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 3
            monitorexit
         8: athrow
         9: .line 447
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* completed */
            invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        10: .line 449
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean completed
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lsun/nio/ch/SocketChannelImpl;
            0   11     1   blocking  Z
            0   11     2  completed  Z
      Exception table:
        from    to  target  type
           2     6       7  any
           7     8       7  any
    Exceptions:
      throws java.nio.channels.AsynchronousCloseException
    MethodParameters:
           Name  Flags
      blocking   
      completed  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 453
            aload 1 /* buf */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 455
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 457
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 2 /* blocking */
        start local 2 // boolean blocking
         3: .line 458
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         4: .line 460
            aload 0 /* this */
            iload 2 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginWrite:(Z)V
         5: .line 461
            iload 2 /* blocking */
            ifeq 9
         6: .line 463
      StackMap locals: int int
      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 */
         7: .line 464
            iload 3 /* n */
            bipush -3
            if_icmpne 18
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 6
         8: .line 465
            goto 18
         9: .line 466
      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 */
        10: .line 468
            goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 4
        12: .line 469
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 13
            iconst_1
            goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        13: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        14: invokevirtual sun.nio.ch.SocketChannelImpl.endWrite:(ZZ)V
        15: .line 470
            iload 3 /* n */
            ifgt 17
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 17
        16: .line 471
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        17: .line 472
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        18: .line 469
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 19
            iconst_1
            goto 20
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        19: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        20: invokevirtual sun.nio.ch.SocketChannelImpl.endWrite:(ZZ)V
        21: .line 470
            iload 3 /* n */
            ifgt 23
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 23
        22: .line 471
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        23: .line 473
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        24: .line 475
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        25: .line 473
            iload 6
            ireturn
        end local 3 // int n
        end local 2 // boolean blocking
        26: .line 474
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer
      StackMap stack: java.lang.Throwable
            astore 5
        27: .line 475
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        28: .line 476
            aload 5
            athrow
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   29     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   29     1       buf  Ljava/nio/ByteBuffer;
            3   26     2  blocking  Z
            4   26     3         n  I
      Exception table:
        from    to  target  type
           4    11      11  any
           2    24      26  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=6, locals=11, 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 483
            iload 2 /* offset */
            iload 3 /* length */
            aload 1 /* srcs */
            arraylength
            invokestatic java.util.Objects.checkFromIndexSize:(III)I
            pop
         1: .line 485
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 487
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 4 /* blocking */
        start local 4 // boolean blocking
         3: .line 488
            lconst_0
            lstore 5 /* n */
        start local 5 // long n
         4: .line 490
            aload 0 /* this */
            iload 4 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginWrite:(Z)V
         5: .line 491
            iload 4 /* blocking */
            ifeq 9
         6: .line 493
      StackMap locals: int long
      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 */
         7: .line 494
            lload 5 /* n */
            ldc -3
            lcmp
            ifne 18
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 6
         8: .line 495
            goto 18
         9: .line 496
      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 */
        10: .line 498
            goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 7
        12: .line 499
            aload 0 /* this */
            iload 4 /* blocking */
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 13
            iconst_1
            goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        13: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        14: invokevirtual sun.nio.ch.SocketChannelImpl.endWrite:(ZZ)V
        15: .line 500
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 17
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 17
        16: .line 501
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        17: .line 502
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        18: .line 499
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* blocking */
            lload 5 /* n */
            lconst_0
            lcmp
            ifle 19
            iconst_1
            goto 20
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        19: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int int long
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        20: invokevirtual sun.nio.ch.SocketChannelImpl.endWrite:(ZZ)V
        21: .line 500
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 23
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 23
        22: .line 501
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        23: .line 503
      StackMap locals:
      StackMap stack:
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 9
        24: .line 505
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        25: .line 503
            lload 9
            lreturn
        end local 5 // long n
        end local 4 // boolean blocking
        26: .line 504
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int
      StackMap stack: java.lang.Throwable
            astore 8
        27: .line 505
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        28: .line 506
            aload 8
            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   29     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   29     1      srcs  [Ljava/nio/ByteBuffer;
            0   29     2    offset  I
            0   29     3    length  I
            3   26     4  blocking  Z
            4   26     5         n  J
      Exception table:
        from    to  target  type
           4    11      11  any
           2    24      26  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  int sendOutOfBandData(byte);
    descriptor: (B)I
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // byte b
         0: .line 513
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 515
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 2 /* blocking */
        start local 2 // boolean blocking
         2: .line 516
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         3: .line 518
            aload 0 /* this */
            iload 2 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginWrite:(Z)V
         4: .line 519
            iload 2 /* blocking */
            ifeq 8
         5: .line 521
      StackMap locals: int int
      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 */
         6: .line 522
            iload 3 /* n */
            bipush -3
            if_icmpne 17
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         7: .line 523
            goto 17
         8: .line 524
      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 */
         9: .line 526
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 4
        11: .line 527
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 12
            iconst_1
            goto 13
      StackMap locals: sun.nio.ch.SocketChannelImpl int int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        12: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl int int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        13: invokevirtual sun.nio.ch.SocketChannelImpl.endWrite:(ZZ)V
        14: .line 528
            iload 3 /* n */
            ifgt 16
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 16
        15: .line 529
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        16: .line 530
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        17: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* blocking */
            iload 3 /* n */
            ifle 18
            iconst_1
            goto 19
      StackMap locals: sun.nio.ch.SocketChannelImpl int int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        18: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl int int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        19: invokevirtual sun.nio.ch.SocketChannelImpl.endWrite:(ZZ)V
        20: .line 528
            iload 3 /* n */
            ifgt 22
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 22
        21: .line 529
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        22: .line 531
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        23: .line 533
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        24: .line 531
            iload 6
            ireturn
        end local 3 // int n
        end local 2 // boolean blocking
        25: .line 532
      StackMap locals: sun.nio.ch.SocketChannelImpl int
      StackMap stack: java.lang.Throwable
            astore 5
        26: .line 533
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        27: .line 534
            aload 5
            athrow
        end local 1 // byte b
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   28     1         b  B
            2   25     2  blocking  Z
            3   25     3         n  I
      Exception table:
        from    to  target  type
           3    10      10  any
           1    23      25  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=5, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean block
         0: .line 539
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 541
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 543
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 544
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         4: .line 545
            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
         5: .line 543
            aload 2
            monitorexit
         6: goto 12
      StackMap locals: sun.nio.ch.SocketChannelImpl int java.lang.Object
      StackMap stack: java.lang.Throwable
         7: aload 2
            monitorexit
         8: athrow
         9: .line 547
      StackMap locals: sun.nio.ch.SocketChannelImpl int
      StackMap stack: java.lang.Throwable
            astore 3
        10: .line 548
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        11: .line 549
            aload 3
            athrow
        12: .line 548
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        13: .line 550
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 4
        15: .line 551
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        16: .line 552
            aload 4
            athrow
        17: .line 551
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        18: .line 553
            return
        end local 1 // boolean block
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   19     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   19     1  block  Z
      Exception table:
        from    to  target  type
           3     6       7  any
           7     8       7  any
           2     9       9  any
           1    14      14  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  

  java.net.InetSocketAddress localAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 559
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 560
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         2: areturn
         3: .line 559
      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

  java.net.InetSocketAddress remoteAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 568
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 569
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         2: areturn
         3: .line 568
      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 575
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 577
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 579
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 580
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         4: .line 581
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 6
         5: .line 582
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         6: .line 583
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnull 8
         7: .line 584
            new java.nio.channels.AlreadyBoundException
            dup
            invokespecial java.nio.channels.AlreadyBoundException.<init>:()V
            athrow
         8: .line 585
      StackMap locals:
      StackMap stack:
            aload 1 /* local */
            ifnonnull 10
         9: .line 586
            new java.net.InetSocketAddress
            dup
            iconst_0
            invokespecial java.net.InetSocketAddress.<init>:(I)V
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 1 /* local */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
        11: .line 585
      StackMap locals:
      StackMap stack: java.net.InetSocketAddress
            astore 3 /* isa */
        start local 3 // java.net.InetSocketAddress isa
        12: .line 587
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 4 /* sm */
        start local 4 // java.lang.SecurityManager sm
        13: .line 588
            aload 4 /* sm */
            ifnull 15
        14: .line 589
            aload 4 /* sm */
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.SecurityManager.checkListen:(I)V
        15: .line 591
      StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.net.NetHooks.beforeTcpBind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        16: .line 592
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.nio.ch.Net.bind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        17: .line 593
            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 4 // java.lang.SecurityManager sm
        end local 3 // java.net.InetSocketAddress isa
        18: .line 579
            aload 2
            monitorexit
        19: goto 25
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object
      StackMap stack: java.lang.Throwable
        20: aload 2
            monitorexit
        21: athrow
        22: .line 595
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress
      StackMap stack: java.lang.Throwable
            astore 5
        23: .line 596
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        24: .line 597
            aload 5
            athrow
        25: .line 596
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        26: .line 598
            goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        27: astore 6
        28: .line 599
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        29: .line 600
            aload 6
            athrow
        30: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        31: .line 601
            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;
           12   18     3    isa  Ljava/net/InetSocketAddress;
           13   18     4     sm  Ljava/lang/SecurityManager;
      Exception table:
        from    to  target  type
           3    19      20  any
          20    21      20  any
           2    22      22  any
           1    27      27  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      local  

  public boolean isConnected();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 606
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/nio/ch/SocketChannelImpl;

  public boolean isConnectionPending();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 611
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/nio/ch/SocketChannelImpl;

  private void beginConnect(boolean, java.net.InetSocketAddress);
    descriptor: (ZLjava/net/InetSocketAddress;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
        start local 2 // java.net.InetSocketAddress isa
         0: .line 626
            iload 1 /* blocking */
            ifeq 2
         1: .line 628
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         2: .line 630
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 631
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         4: .line 632
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            istore 4 /* state */
        start local 4 // int state
         5: .line 633
            iload 4 /* state */
            iconst_2
            if_icmpne 7
         6: .line 634
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            athrow
         7: .line 635
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 4 /* state */
            iconst_1
            if_icmpne 9
         8: .line 636
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         9: .line 637
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 10
            iload 4 /* state */
            ifeq 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 638
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.state:I
        11: .line 640
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnonnull 13
        12: .line 641
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 2 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 2 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.net.NetHooks.beforeTcpConnect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        13: .line 642
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* isa */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
        14: .line 644
            iload 1 /* blocking */
            ifeq 16
        15: .line 646
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        end local 4 // int state
        16: .line 630
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 3
            monitorexit
        19: athrow
        20: .line 649
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.net.InetSocketAddress isa
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   21     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   21     1  blocking  Z
            0   21     2       isa  Ljava/net/InetSocketAddress;
            5   16     4     state  I
      Exception table:
        from    to  target  type
           3    17      18  any
          18    19      18  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      blocking  
      isa       

  private void endConnect(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
        start local 2 // boolean completed
         0: .line 661
            aload 0 /* this */
            iload 1 /* blocking */
            iload 2 /* completed */
            invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
         1: .line 663
            iload 2 /* completed */
            ifeq 10
         2: .line 664
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 665
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 6
         4: .line 666
            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;
         5: .line 667
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
         6: .line 664
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        10: .line 671
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean completed
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lsun/nio/ch/SocketChannelImpl;
            0   11     1   blocking  Z
            0   11     2  completed  Z
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      blocking   
      completed  

  public boolean connect(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=11, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketAddress sa
         0: .line 675
            aload 1 /* sa */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
            astore 2 /* isa */
        start local 2 // java.net.InetSocketAddress isa
         1: .line 676
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* sm */
        start local 3 // java.lang.SecurityManager sm
         2: .line 677
            aload 3 /* sm */
            ifnull 4
         3: .line 678
            aload 3 /* sm */
            aload 2 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            aload 2 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
         4: .line 680
      StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 2 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            astore 4 /* ia */
        start local 4 // java.net.InetAddress ia
         5: .line 681
            aload 4 /* ia */
            invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
            ifeq 7
         6: .line 682
            invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
            astore 4 /* ia */
         7: .line 685
      StackMap locals: java.net.InetAddress
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         8: .line 687
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         9: .line 689
            iconst_0
            istore 5 /* n */
        start local 5 // int n
        10: .line 690
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 6 /* blocking */
        start local 6 // boolean blocking
        11: .line 692
            aload 0 /* this */
            iload 6 /* blocking */
            aload 2 /* isa */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginConnect:(ZLjava/net/InetSocketAddress;)V
        12: .line 694
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 4 /* ia */
            aload 2 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
            istore 5 /* n */
        13: .line 695
            iload 5 /* n */
            bipush -3
            if_icmpne 20
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 12
        14: .line 696
            goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 7
        16: .line 697
            aload 0 /* this */
            iload 6 /* blocking */
            iload 5 /* n */
            ifle 17
            iconst_1
            goto 18
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.net.InetSocketAddress java.lang.SecurityManager java.net.InetAddress int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        17: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.net.InetSocketAddress java.lang.SecurityManager java.net.InetAddress int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        18: invokevirtual sun.nio.ch.SocketChannelImpl.endConnect:(ZZ)V
        19: .line 698
            aload 7
            athrow
        20: .line 697
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 6 /* blocking */
            iload 5 /* n */
            ifle 21
            iconst_1
            goto 22
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.net.InetSocketAddress java.lang.SecurityManager java.net.InetAddress int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        21: iconst_0
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.net.InetSocketAddress java.lang.SecurityManager java.net.InetAddress int int
      StackMap stack: sun.nio.ch.SocketChannelImpl int int
        22: invokevirtual sun.nio.ch.SocketChannelImpl.endConnect:(ZZ)V
        23: .line 699
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 24
            iload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 24
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        24: .line 700
      StackMap locals:
      StackMap stack:
            iload 5 /* n */
            ifle 25
            iconst_1
            goto 26
      StackMap locals:
      StackMap stack:
        25: iconst_0
      StackMap locals:
      StackMap stack: int
        26: istore 9
        27: .line 702
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        28: .line 705
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        29: .line 700
            iload 9
            ireturn
        end local 6 // boolean blocking
        end local 5 // int n
        30: .line 701
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.net.InetSocketAddress java.lang.SecurityManager java.net.InetAddress
      StackMap stack: java.lang.Throwable
            astore 8
        31: .line 702
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        32: .line 703
            aload 8
            athrow
        33: .line 704
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        34: .line 705
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        35: .line 706
            aload 10
            athrow
        36: .line 707
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 5 /* ioe */
        start local 5 // java.io.IOException ioe
        37: .line 709
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        38: .line 710
            aload 5 /* ioe */
            aload 2 /* isa */
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            athrow
        end local 5 // java.io.IOException ioe
        end local 4 // java.net.InetAddress ia
        end local 3 // java.lang.SecurityManager sm
        end local 2 // java.net.InetSocketAddress isa
        end local 1 // java.net.SocketAddress sa
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   39     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   39     1        sa  Ljava/net/SocketAddress;
            1   39     2       isa  Ljava/net/InetSocketAddress;
            2   39     3        sm  Ljava/lang/SecurityManager;
            5   39     4        ia  Ljava/net/InetAddress;
           10   30     5         n  I
           11   30     6  blocking  Z
           37   39     5       ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          11    15      15  any
           9    27      30  any
           8    28      33  any
          30    33      33  any
           7    29      36  Class java.io.IOException
          30    36      36  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      sa    

  private void beginFinishConnect(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
         0: .line 721
            iload 1 /* blocking */
            ifeq 2
         1: .line 723
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         2: .line 725
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 726
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         4: .line 727
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpeq 6
         5: .line 728
            new java.nio.channels.NoConnectionPendingException
            dup
            invokespecial java.nio.channels.NoConnectionPendingException.<init>:()V
            athrow
         6: .line 729
      StackMap locals: java.lang.Object
      StackMap stack:
            iload 1 /* blocking */
            ifeq 8
         7: .line 731
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         8: .line 725
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 2
            monitorexit
        11: athrow
        12: .line 734
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   13     1  blocking  Z
      Exception table:
        from    to  target  type
           3     9      10  any
          10    11      10  any
    Exceptions:
      throws java.nio.channels.ClosedChannelException
    MethodParameters:
          Name  Flags
      blocking  

  private void endFinishConnect(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean blocking
        start local 2 // boolean completed
         0: .line 746
            aload 0 /* this */
            iload 1 /* blocking */
            iload 2 /* completed */
            invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
         1: .line 748
            iload 2 /* completed */
            ifeq 10
         2: .line 749
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 750
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 6
         4: .line 751
            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;
         5: .line 752
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
         6: .line 749
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        10: .line 756
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean completed
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lsun/nio/ch/SocketChannelImpl;
            0   11     1   blocking  Z
            0   11     2  completed  Z
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      blocking   
      completed  

  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 761
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 763
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         2: .line 766
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifeq 6
         3: .line 788
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         4: .line 791
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         5: .line 767
            iconst_1
            ireturn
         6: .line 769
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 1 /* blocking */
        start local 1 // boolean blocking
         7: .line 770
            iconst_0
            istore 2 /* connected */
        start local 2 // boolean connected
         8: .line 772
            aload 0 /* this */
            iload 1 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginFinishConnect:(Z)V
         9: .line 773
            iconst_0
            istore 3 /* n */
        start local 3 // int n
        10: .line 774
            iload 1 /* blocking */
            ifeq 15
        11: .line 776
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;Z)I
            istore 3 /* n */
        12: .line 777
            iload 3 /* n */
            ifeq 13
            iload 3 /* n */
            bipush -3
            if_icmpne 16
      StackMap locals:
      StackMap stack:
        13: aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 11
        14: .line 778
            goto 16
        15: .line 779
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;Z)I
            istore 3 /* n */
        16: .line 781
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifle 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 2 /* connected */
        end local 3 // int n
        19: .line 782
            goto 23
      StackMap locals: sun.nio.ch.SocketChannelImpl int int
      StackMap stack: java.lang.Throwable
        20: astore 4
        21: .line 783
            aload 0 /* this */
            iload 1 /* blocking */
            iload 2 /* connected */
            invokevirtual sun.nio.ch.SocketChannelImpl.endFinishConnect:(ZZ)V
        22: .line 784
            aload 4
            athrow
        23: .line 783
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* blocking */
            iload 2 /* connected */
            invokevirtual sun.nio.ch.SocketChannelImpl.endFinishConnect:(ZZ)V
        24: .line 785
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 29
            iload 1 /* blocking */
            ifeq 25
            iload 2 /* connected */
            ifeq 25
            iconst_1
            goto 26
      StackMap locals:
      StackMap stack:
        25: iconst_0
      StackMap locals:
      StackMap stack: int
        26: iload 1 /* blocking */
            ifeq 27
            iconst_0
            goto 28
      StackMap locals:
      StackMap stack: int
        27: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl int int
      StackMap stack: int int
        28: ixor
            ifne 29
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        29: .line 786
      StackMap locals:
      StackMap stack:
            iload 2 /* connected */
            istore 6
        30: .line 788
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        31: .line 791
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        32: .line 786
            iload 6
            ireturn
        end local 2 // boolean connected
        end local 1 // boolean blocking
        33: .line 787
      StackMap locals: sun.nio.ch.SocketChannelImpl
      StackMap stack: java.lang.Throwable
            astore 5
        34: .line 788
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        35: .line 789
            aload 5
            athrow
        36: .line 790
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        37: .line 791
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        38: .line 792
            aload 7
            athrow
        39: .line 793
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
        40: .line 795
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        41: .line 796
            aload 1 /* ioe */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            athrow
        end local 1 // java.io.IOException ioe
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   42     0       this  Lsun/nio/ch/SocketChannelImpl;
            7   33     1   blocking  Z
            8   33     2  connected  Z
           10   19     3          n  I
           40   42     1        ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8    20      20  any
           2     3      33  any
           6    30      33  any
           1     4      36  any
           6    31      36  any
          33    36      36  any
           0     5      39  Class java.io.IOException
           6    32      39  Class java.io.IOException
          33    39      39  Class java.io.IOException
    Exceptions:
      throws java.io.IOException

  protected void implCloseSelectableChannel();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=9, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 819
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 823
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* interrupted */
        start local 3 // boolean interrupted
         2: .line 826
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 827
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 4
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmplt 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 828
      StackMap locals: sun.nio.ch.SocketChannelImpl top top int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 1 /* blocking */
        start local 1 // boolean blocking
         5: .line 829
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 6
            iconst_1
            goto 7
      StackMap locals: sun.nio.ch.SocketChannelImpl int top int java.lang.Object
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 2 /* connected */
        start local 2 // boolean connected
         8: .line 830
            aload 0 /* this */
            iconst_3
            putfield sun.nio.ch.SocketChannelImpl.state:I
         9: .line 826
            aload 4
            monitorexit
        10: goto 13
        end local 2 // boolean connected
        end local 1 // boolean blocking
      StackMap locals: sun.nio.ch.SocketChannelImpl top top int java.lang.Object
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        start local 1 // boolean blocking
        start local 2 // boolean connected
        13: .line 834
      StackMap locals: sun.nio.ch.SocketChannelImpl int int int
      StackMap stack:
            iload 1 /* blocking */
            ifeq 35
        14: .line 835
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        15: .line 836
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 16
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpeq 16
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        16: .line 837
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lstore 5 /* reader */
        start local 5 // long reader
        17: .line 838
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lstore 7 /* writer */
        start local 7 // long writer
        18: .line 839
            lload 5 /* reader */
            lconst_0
            lcmp
            ifne 19
            lload 7 /* writer */
            lconst_0
            lcmp
            ifeq 31
        19: .line 840
      StackMap locals: long long
      StackMap stack:
            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
        20: .line 841
            iconst_0
            istore 2 /* connected */
        21: .line 843
            lload 5 /* reader */
            lconst_0
            lcmp
            ifeq 23
        22: .line 844
            lload 5 /* reader */
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
        23: .line 845
      StackMap locals:
      StackMap stack:
            lload 7 /* writer */
            lconst_0
            lcmp
            ifeq 30
        24: .line 846
            lload 7 /* writer */
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
        25: .line 849
            goto 30
        26: .line 851
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
        27: .line 852
            goto 30
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        28: pop
        29: .line 853
            iconst_1
            istore 3 /* interrupted */
        30: .line 849
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifne 26
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifne 26
        end local 7 // long writer
        end local 5 // long reader
        31: .line 835
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        32: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 4
            monitorexit
        34: athrow
        35: .line 860
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
        36: .line 862
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
        37: .line 863
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        38: .line 864
            goto 42
      StackMap locals:
      StackMap stack: java.lang.Throwable
        39: astore 4
        40: .line 865
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        41: .line 866
            aload 4
            athrow
        42: .line 865
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        43: .line 870
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        44: .line 871
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 45
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpeq 45
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        45: .line 877
      StackMap locals: java.lang.Object
      StackMap stack:
            iload 2 /* connected */
            ifeq 54
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isRegistered:()Z
            ifeq 54
        46: .line 879
            getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
            astore 5 /* opt */
        start local 5 // java.net.SocketOption opt
        47: .line 880
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.Net.UNSPEC:Ljava/net/ProtocolFamily;
            aload 5 /* opt */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 6 /* interval */
        start local 6 // int interval
        48: .line 881
            iload 6 /* interval */
            ifeq 54
        49: .line 882
            iload 6 /* interval */
            ifle 51
        50: .line 884
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.Net.UNSPEC:Ljava/net/ProtocolFamily;
            aload 5 /* opt */
            iconst_m1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
        51: .line 886
      StackMap locals: java.net.SocketOption int
      StackMap stack:
            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
        end local 6 // int interval
        end local 5 // java.net.SocketOption opt
        52: .line 888
            goto 54
      StackMap locals: sun.nio.ch.SocketChannelImpl int int int java.lang.Object
      StackMap stack: java.io.IOException
        53: pop
        54: .line 890
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_4
            putfield sun.nio.ch.SocketChannelImpl.state:I
        55: .line 870
            aload 4
            monitorexit
        56: goto 59
      StackMap locals:
      StackMap stack: java.lang.Throwable
        57: aload 4
            monitorexit
        58: athrow
        59: .line 894
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isRegistered:()Z
            ifne 61
        60: .line 895
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        61: .line 898
      StackMap locals:
      StackMap stack:
            iload 3 /* interrupted */
            ifeq 63
        62: .line 899
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        63: .line 900
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean interrupted
        end local 2 // boolean connected
        end local 1 // boolean blocking
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   64     0         this  Lsun/nio/ch/SocketChannelImpl;
            5   11     1     blocking  Z
           13   64     1     blocking  Z
            8   11     2    connected  Z
           13   64     2    connected  Z
            2   64     3  interrupted  Z
           17   31     5       reader  J
           18   31     7       writer  J
           47   52     5          opt  Ljava/net/SocketOption<Ljava/lang/Integer;>;
           48   52     6     interval  I
      Exception table:
        from    to  target  type
           3    10      11  any
          11    12      11  any
          26    27      28  Class java.lang.InterruptedException
          15    32      33  any
          33    34      33  any
          36    39      39  any
          46    52      53  Class java.io.IOException
          44    56      57  any
          57    58      57  any
    Exceptions:
      throws java.io.IOException

  public void kill();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 904
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 905
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_4
            if_icmpne 4
         2: .line 906
            aload 0 /* this */
            iconst_5
            putfield sun.nio.ch.SocketChannelImpl.state:I
         3: .line 907
            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
         4: .line 904
      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 910
      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 java.nio.channels.SocketChannel shutdownInput();
    descriptor: ()Ljava/nio/channels/SocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 914
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 915
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         2: .line 916
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 4
         3: .line 917
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         4: .line 918
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifne 10
         5: .line 919
            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
         6: .line 920
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lstore 2 /* thread */
        start local 2 // long thread
         7: .line 921
            lload 2 /* thread */
            lconst_0
            lcmp
            ifeq 9
         8: .line 922
            lload 2 /* thread */
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         9: .line 923
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
        end local 2 // long thread
        10: .line 925
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            monitorexit
        11: areturn
        12: .line 914
      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;
            7   10     2  thread  J
      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=4, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 931
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 932
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpen:()V
         2: .line 933
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 4
         3: .line 934
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         4: .line 935
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifne 10
         5: .line 936
            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
         6: .line 937
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lstore 2 /* thread */
        start local 2 // long thread
         7: .line 938
            lload 2 /* thread */
            lconst_0
            lcmp
            ifeq 9
         8: .line 939
            lload 2 /* thread */
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         9: .line 940
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
        end local 2 // long thread
        10: .line 942
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            monitorexit
        11: areturn
        12: .line 931
      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;
            7   10     2  thread  J
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    Exceptions:
      throws java.io.IOException

  boolean isInputOpen();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 947
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/nio/ch/SocketChannelImpl;

  boolean isOutputOpen();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 951
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/nio/ch/SocketChannelImpl;

  boolean pollRead(long);
    descriptor: (J)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // long timeout
         0: .line 959
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 3 /* blocking */
        start local 3 // boolean blocking
         1: .line 960
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 3
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifeq 2
            iload 3 /* blocking */
            ifne 3
      StackMap locals: int
      StackMap stack:
         2: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 962
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         4: .line 964
            iconst_0
            istore 4 /* polled */
        start local 4 // boolean polled
         5: .line 966
            aload 0 /* this */
            iload 3 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginRead:(Z)V
         6: .line 967
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.Net.POLLIN:S
            lload 1 /* timeout */
            invokestatic sun.nio.ch.Net.poll:(Ljava/io/FileDescriptor;IJ)I
            istore 5 /* events */
        start local 5 // int events
         7: .line 968
            iload 5 /* events */
            ifeq 8
            iconst_1
            goto 9
      StackMap locals: int int
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: istore 4 /* polled */
        end local 5 // int events
        10: .line 969
            goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl long int int
      StackMap stack: java.lang.Throwable
        11: astore 6
        12: .line 970
            aload 0 /* this */
            iload 3 /* blocking */
            iload 4 /* polled */
            invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
        13: .line 971
            aload 6
            athrow
        14: .line 970
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* blocking */
            iload 4 /* polled */
            invokevirtual sun.nio.ch.SocketChannelImpl.endRead:(ZZ)V
        15: .line 972
            iload 4 /* polled */
            istore 8
        16: .line 974
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        17: .line 972
            iload 8
            ireturn
        end local 4 // boolean polled
        18: .line 973
      StackMap locals: sun.nio.ch.SocketChannelImpl long int
      StackMap stack: java.lang.Throwable
            astore 7
        19: .line 974
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        20: .line 975
            aload 7
            athrow
        end local 3 // boolean blocking
        end local 1 // long timeout
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   21     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   21     1   timeout  J
            1   21     3  blocking  Z
            5   18     4    polled  Z
            7   10     5    events  I
      Exception table:
        from    to  target  type
           5    11      11  any
           4    16      18  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      timeout  

  boolean pollConnected(long);
    descriptor: (J)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // long timeout
         0: .line 983
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            istore 3 /* blocking */
        start local 3 // boolean blocking
         1: .line 984
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 3
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifeq 2
            iload 3 /* blocking */
            ifne 3
      StackMap locals: int
      StackMap stack:
         2: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 986
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         4: .line 988
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         5: .line 990
            iconst_0
            istore 4 /* polled */
        start local 4 // boolean polled
         6: .line 992
            aload 0 /* this */
            iload 3 /* blocking */
            invokevirtual sun.nio.ch.SocketChannelImpl.beginFinishConnect:(Z)V
         7: .line 993
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.Net.POLLCONN:S
            lload 1 /* timeout */
            invokestatic sun.nio.ch.Net.poll:(Ljava/io/FileDescriptor;IJ)I
            istore 5 /* events */
        start local 5 // int events
         8: .line 994
            iload 5 /* events */
            ifeq 9
            iconst_1
            goto 10
      StackMap locals: int int
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 4 /* polled */
        end local 5 // int events
        11: .line 995
            goto 15
      StackMap locals: sun.nio.ch.SocketChannelImpl long int int
      StackMap stack: java.lang.Throwable
        12: astore 6
        13: .line 999
            aload 0 /* this */
            iload 3 /* blocking */
            iconst_0
            invokevirtual sun.nio.ch.SocketChannelImpl.endFinishConnect:(ZZ)V
        14: .line 1000
            aload 6
            athrow
        15: .line 999
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* blocking */
            iconst_0
            invokevirtual sun.nio.ch.SocketChannelImpl.endFinishConnect:(ZZ)V
        16: .line 1001
            iload 4 /* polled */
            istore 8
        17: .line 1003
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        18: .line 1006
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        19: .line 1001
            iload 8
            ireturn
        end local 4 // boolean polled
        20: .line 1002
      StackMap locals: sun.nio.ch.SocketChannelImpl long int
      StackMap stack: java.lang.Throwable
            astore 7
        21: .line 1003
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        22: .line 1004
            aload 7
            athrow
        23: .line 1005
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        24: .line 1006
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        25: .line 1007
            aload 9
            athrow
        end local 3 // boolean blocking
        end local 1 // long timeout
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   26     0      this  Lsun/nio/ch/SocketChannelImpl;
            0   26     1   timeout  J
            1   26     3  blocking  Z
            6   20     4    polled  Z
            8   11     5    events  I
      Exception table:
        from    to  target  type
           6    12      12  any
           5    17      20  any
           4    18      23  any
          20    23      23  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      timeout  

  public boolean translateReadyOps(int, int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (IILsun/nio/ch/SelectionKeyImpl;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, 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 ski
         0: .line 1014
            aload 3 /* ski */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioInterestOps:()I
            istore 4 /* intOps */
        start local 4 // int intOps
         1: .line 1015
            aload 3 /* ski */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:()I
            istore 5 /* oldOps */
        start local 5 // int oldOps
         2: .line 1016
            iload 2 /* initialOps */
            istore 6 /* newOps */
        start local 6 // int newOps
         3: .line 1018
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLNVAL:S
            iand
            ifeq 5
         4: .line 1022
            iconst_0
            ireturn
         5: .line 1025
      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 10
         6: .line 1026
            iload 4 /* intOps */
            istore 6 /* newOps */
         7: .line 1027
            aload 3 /* ski */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
         8: .line 1028
            iload 6 /* newOps */
            iload 5 /* oldOps */
            iconst_m1
            ixor
            iand
            ifeq 9
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         9: iconst_0
            ireturn
        10: .line 1031
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            istore 7 /* connected */
        start local 7 // boolean connected
        11: .line 1032
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLIN:S
            iand
            ifeq 14
        12: .line 1033
            iload 4 /* intOps */
            iconst_1
            iand
            ifeq 14
            iload 7 /* connected */
            ifeq 14
        13: .line 1034
            iload 6 /* newOps */
            iconst_1
            ior
            istore 6 /* newOps */
        14: .line 1036
      StackMap locals: int
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLCONN:S
            iand
            ifeq 17
        15: .line 1037
            iload 4 /* intOps */
            bipush 8
            iand
            ifeq 17
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnectionPending:()Z
            ifeq 17
        16: .line 1038
            iload 6 /* newOps */
            bipush 8
            ior
            istore 6 /* newOps */
        17: .line 1040
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLOUT:S
            iand
            ifeq 20
        18: .line 1041
            iload 4 /* intOps */
            iconst_4
            iand
            ifeq 20
            iload 7 /* connected */
            ifeq 20
        19: .line 1042
            iload 6 /* newOps */
            iconst_4
            ior
            istore 6 /* newOps */
        20: .line 1044
      StackMap locals:
      StackMap stack:
            aload 3 /* ski */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
        21: .line 1045
            iload 6 /* newOps */
            iload 5 /* oldOps */
            iconst_m1
            ixor
            iand
            ifeq 22
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        22: iconst_0
            ireturn
        end local 7 // boolean connected
        end local 6 // int newOps
        end local 5 // int oldOps
        end local 4 // int intOps
        end local 3 // sun.nio.ch.SelectionKeyImpl ski
        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   23     0        this  Lsun/nio/ch/SocketChannelImpl;
            0   23     1         ops  I
            0   23     2  initialOps  I
            0   23     3         ski  Lsun/nio/ch/SelectionKeyImpl;
            1   23     4      intOps  I
            2   23     5      oldOps  I
            3   23     6      newOps  I
           11   23     7   connected  Z
    MethodParameters:
            Name  Flags
      ops         
      initialOps  
      ski         

  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 ski
         0: .line 1049
            aload 0 /* this */
            iload 1 /* ops */
            aload 2 /* ski */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:()I
            aload 2 /* ski */
            invokevirtual sun.nio.ch.SocketChannelImpl.translateReadyOps:(IILsun/nio/ch/SelectionKeyImpl;)Z
            ireturn
        end local 2 // sun.nio.ch.SelectionKeyImpl ski
        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   ski  Lsun/nio/ch/SelectionKeyImpl;
    MethodParameters:
      Name  Flags
      ops   
      ski   

  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 ski
         0: .line 1053
            aload 0 /* this */
            iload 1 /* ops */
            iconst_0
            aload 2 /* ski */
            invokevirtual sun.nio.ch.SocketChannelImpl.translateReadyOps:(IILsun/nio/ch/SelectionKeyImpl;)Z
            ireturn
        end local 2 // sun.nio.ch.SelectionKeyImpl ski
        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   ski  Lsun/nio/ch/SelectionKeyImpl;
    MethodParameters:
      Name  Flags
      ops   
      ski   

  public int translateInterestOps(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
         0: .line 1060
            iconst_0
            istore 2 /* newOps */
        start local 2 // int newOps
         1: .line 1061
            iload 1 /* ops */
            iconst_1
            iand
            ifeq 3
         2: .line 1062
            iload 2 /* newOps */
            getstatic sun.nio.ch.Net.POLLIN:S
            ior
            istore 2 /* newOps */
         3: .line 1063
      StackMap locals: int
      StackMap stack:
            iload 1 /* ops */
            iconst_4
            iand
            ifeq 5
         4: .line 1064
            iload 2 /* newOps */
            getstatic sun.nio.ch.Net.POLLOUT:S
            ior
            istore 2 /* newOps */
         5: .line 1065
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            bipush 8
            iand
            ifeq 7
         6: .line 1066
            iload 2 /* newOps */
            getstatic sun.nio.ch.Net.POLLCONN:S
            ior
            istore 2 /* newOps */
         7: .line 1067
      StackMap locals:
      StackMap stack:
            iload 2 /* newOps */
            ireturn
        end local 2 // int newOps
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lsun/nio/ch/SocketChannelImpl;
            0    8     1     ops  I
            1    8     2  newOps  I
    MethodParameters:
      Name  Flags
      ops   

  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 1071
            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 1075
            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 1080
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 1081
            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.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 1082
            aload 1 /* sb */
            bipush 91
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         3: .line 1083
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 1084
            aload 1 /* sb */
            ldc "closed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
            goto 27
         5: .line 1086
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         6: .line 1087
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            tableswitch { // 0 - 2
                    0: 7
                    1: 9
                    2: 11
              default: 16
          }
         7: .line 1089
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* sb */
            ldc "unconnected"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 1090
            goto 16
         9: .line 1092
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connection-pending"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 1093
            goto 16
        11: .line 1095
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connected"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 1096
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputClosed:Z
            ifeq 14
        13: .line 1097
            aload 1 /* sb */
            ldc " ishut"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 1098
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputClosed:Z
            ifeq 16
        15: .line 1099
            aload 1 /* sb */
            ldc " oshut"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 1102
      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 1103
            aload 3 /* addr */
            ifnull 20
        18: .line 1104
            aload 1 /* sb */
            ldc " local="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 1105
            aload 1 /* sb */
            aload 3 /* addr */
            invokestatic sun.nio.ch.Net.getRevealedLocalAddressAsString:(Ljava/net/InetSocketAddress;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 1107
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/InetSocketAddress;
            ifnull 23
        21: .line 1108
            aload 1 /* sb */
            ldc " remote="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 1109
            aload 1 /* sb */
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // java.net.InetSocketAddress addr
        23: .line 1086
      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 1113
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        28: .line 1114
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder 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/StringBuilder;
           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);
    descriptor: (Ljava/io/FileDescriptor;Z)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      block  

  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