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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private sun.nio.ch.SocketOpts$IP$TCP options;
    descriptor: Lsun/nio/ch/SocketOpts$IP$TCP;
    flags: (0x0002) ACC_PRIVATE

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

  public static final int SHUT_RD;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int SHUT_WR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int SHUT_RDWR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  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 40
            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 887
            invokestatic sun.nio.ch.IOUtil.load:()V
         4: .line 888
            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 889
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.nio.channels.spi.SelectorProvider);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
         0: .line 101
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 56
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 60
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
         4: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
         5: .line 67
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         6: .line 78
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 85
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 86
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 87
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 90
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.SocketChannelImpl.options:Lsun/nio/ch/SocketOpts$IP$TCP;
        11: .line 93
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
        12: .line 102
            aload 0 /* this */
            iconst_1
            invokestatic sun.nio.ch.Net.socket:(Z)Ljava/io/FileDescriptor;
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        13: .line 103
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        14: .line 104
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.state:I
        15: .line 105
            return
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   16     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, java.net.InetSocketAddress);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
        start local 2 // java.io.FileDescriptor fd
        start local 3 // java.net.InetSocketAddress remote
         0: .line 113
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 56
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 60
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
         4: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
         5: .line 67
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
         6: .line 78
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 85
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 86
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 87
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 90
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.SocketChannelImpl.options:Lsun/nio/ch/SocketOpts$IP$TCP;
        11: .line 93
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
        12: .line 114
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        13: .line 115
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        14: .line 116
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        15: .line 117
            aload 0 /* this */
            aload 3 /* remote */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
        16: .line 118
            return
        end local 3 // java.net.InetSocketAddress remote
        end local 2 // java.io.FileDescriptor fd
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   17     1      sp  Ljava/nio/channels/spi/SelectorProvider;
            0   17     2      fd  Ljava/io/FileDescriptor;
            0   17     3  remote  Ljava/net/InetSocketAddress;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      sp      
      fd      
      remote  

  public java.net.Socket socket();
    descriptor: ()Ljava/net/Socket;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 121
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 122
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.socket:Ljava/net/Socket;
            ifnonnull 3
         2: .line 123
            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 124
      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 121
      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

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

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

  private void readerCleanup();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 153
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 154
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 155
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 4
         3: .line 156
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
         4: .line 153
      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 158
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.IOException

  private void writerCleanup();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 161
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 162
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         2: .line 163
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 4
         3: .line 164
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
         4: .line 161
      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 166
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.IOException

  public int read(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 170
            aload 1 /* buf */
            ifnonnull 2
         1: .line 171
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 174
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureReadOpen:()Z
            ifne 6
         4: .line 175
            aload 2
            monitorexit
         5: iconst_m1
            ireturn
         6: .line 176
      StackMap locals: java.lang.Object
      StackMap stack:
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         7: .line 182
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         8: .line 184
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         9: .line 185
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 27
        10: .line 193
            aload 4
            monitorexit
        11: .line 264
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        12: .line 281
            aload 0 /* this */
            iload 3 /* n */
            ifgt 13
            iload 3 /* n */
            bipush -2
            if_icmpeq 13
            iconst_0
            goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        13: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        14: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        15: .line 285
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        16: .line 286
            iload 3 /* n */
            ifgt 20
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 20
        17: .line 287
            aload 7
            monitorexit
        18: aload 2
            monitorexit
        19: iconst_m1
            ireturn
        20: .line 285
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 7
            monitorexit
        23: athrow
        24: .line 290
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 25
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 25
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        25: aload 2
            monitorexit
        26: .line 193
            iconst_0
            ireturn
        27: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        28: .line 184
            aload 4
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 4
            monitorexit
        31: athrow
        32: .line 254
      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;
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;Ljava/lang/Object;)I
            istore 3 /* n */
        33: .line 255
            iload 3 /* n */
            bipush -3
            if_icmpne 35
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 35
        34: .line 258
            goto 32
        35: .line 260
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        36: .line 264
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        37: .line 281
            aload 0 /* this */
            iload 3 /* n */
            ifgt 38
            iload 3 /* n */
            bipush -2
            if_icmpeq 38
            iconst_0
            goto 39
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl
        38: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        39: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        40: .line 285
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        41: .line 286
            iload 3 /* n */
            ifgt 45
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 45
        42: .line 287
            aload 7
            monitorexit
        43: aload 2
            monitorexit
        44: iconst_m1
            ireturn
        45: .line 285
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        46: goto 49
      StackMap locals:
      StackMap stack: java.lang.Throwable
        47: aload 7
            monitorexit
        48: athrow
        49: .line 290
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 50
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 50
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        50: .line 260
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        51: iload 6
            ireturn
        52: .line 263
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 5
        53: .line 264
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        54: .line 281
            aload 0 /* this */
            iload 3 /* n */
            ifgt 55
            iload 3 /* n */
            bipush -2
            if_icmpeq 55
            iconst_0
            goto 56
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        55: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        56: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        57: .line 285
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        58: .line 286
            iload 3 /* n */
            ifgt 62
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 62
        59: .line 287
            aload 7
            monitorexit
        60: aload 2
            monitorexit
        61: iconst_m1
            ireturn
        62: .line 285
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        63: goto 66
      StackMap locals:
      StackMap stack: java.lang.Throwable
        64: aload 7
            monitorexit
        65: athrow
        66: .line 290
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 67
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 67
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        67: .line 292
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 3 // int n
        68: .line 173
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        69: athrow
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   70     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   70     1   buf  Ljava/nio/ByteBuffer;
            7   68     3     n  I
      Exception table:
        from    to  target  type
          16    18      22  any
          20    21      22  any
          22    23      22  any
           9    11      30  any
          27    29      30  any
          30    31      30  any
          41    43      47  any
          45    46      47  any
          47    48      47  any
           7    11      52  any
          27    36      52  any
          58    60      64  any
          62    63      64  any
          64    65      64  any
           3     5      68  any
           6    19      68  any
          20    26      68  any
          27    44      68  any
          45    51      68  any
          52    61      68  any
          62    69      68  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   

  private long read0(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer[] bufs
         0: .line 297
            aload 1 /* bufs */
            ifnonnull 2
         1: .line 298
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 299
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 300
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureReadOpen:()Z
            ifne 6
         4: .line 301
            aload 2
            monitorexit
         5: ldc -1
            lreturn
         6: .line 302
      StackMap locals: java.lang.Object
      StackMap stack:
            lconst_0
            lstore 3 /* n */
        start local 3 // long n
         7: .line 304
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         8: .line 305
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         9: .line 306
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 27
        10: .line 307
            aload 5
            monitorexit
        11: .line 318
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        12: .line 319
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 13
            lload 3 /* n */
            ldc -2
            lcmp
            ifeq 13
            iconst_0
            goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        13: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        14: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        15: .line 320
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        16: .line 321
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 20
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 20
        17: .line 322
            aload 9
            monitorexit
        18: aload 2
            monitorexit
        19: ldc -1
            lreturn
        20: .line 320
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object top top top java.lang.Object
      StackMap stack:
            aload 9
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 9
            monitorexit
        23: athrow
        24: .line 324
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 25
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 25
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        25: aload 2
            monitorexit
        26: .line 307
            lconst_0
            lreturn
        27: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        28: .line 305
            aload 5
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 5
            monitorexit
        31: athrow
        32: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* bufs */
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            lstore 3 /* n */
        33: .line 313
            lload 3 /* n */
            ldc -3
            lcmp
            ifne 35
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 35
        34: .line 314
            goto 32
        35: .line 315
      StackMap locals:
      StackMap stack:
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 7
        36: .line 318
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        37: .line 319
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 38
            lload 3 /* n */
            ldc -2
            lcmp
            ifeq 38
            iconst_0
            goto 39
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top top long
      StackMap stack: sun.nio.ch.SocketChannelImpl
        38: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top top long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        39: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        40: .line 320
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        41: .line 321
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 45
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 45
        42: .line 322
            aload 9
            monitorexit
        43: aload 2
            monitorexit
        44: ldc -1
            lreturn
        45: .line 320
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 9
            monitorexit
        46: goto 49
      StackMap locals:
      StackMap stack: java.lang.Throwable
        47: aload 9
            monitorexit
        48: athrow
        49: .line 324
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 50
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 50
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        50: .line 315
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        51: lload 7
            lreturn
        52: .line 317
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long
      StackMap stack: java.lang.Throwable
            astore 6
        53: .line 318
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        54: .line 319
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 55
            lload 3 /* n */
            ldc -2
            lcmp
            ifeq 55
            iconst_0
            goto 56
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        55: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        56: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        57: .line 320
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        58: .line 321
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 62
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 62
        59: .line 322
            aload 9
            monitorexit
        60: aload 2
            monitorexit
        61: ldc -1
            lreturn
        62: .line 320
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable top top java.lang.Object
      StackMap stack:
            aload 9
            monitorexit
        63: goto 66
      StackMap locals:
      StackMap stack: java.lang.Throwable
        64: aload 9
            monitorexit
        65: athrow
        66: .line 324
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 67
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 67
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        67: .line 325
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 3 // long n
        68: .line 299
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        69: athrow
        end local 1 // java.nio.ByteBuffer[] bufs
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   70     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   70     1  bufs  [Ljava/nio/ByteBuffer;
            7   68     3     n  J
      Exception table:
        from    to  target  type
          16    18      22  any
          20    21      22  any
          22    23      22  any
           9    11      30  any
          27    29      30  any
          30    31      30  any
          41    43      47  any
          45    46      47  any
          47    48      47  any
           7    11      52  any
          27    36      52  any
          58    60      64  any
          62    63      64  any
          64    65      64  any
           3     5      68  any
           6    19      68  any
          20    26      68  any
          27    44      68  any
          45    51      68  any
          52    61      68  any
          62    69      68  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      bufs  

  public long read(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, 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 332
            iload 2 /* offset */
            iflt 1
            iload 3 /* length */
            iflt 1
            iload 2 /* offset */
            aload 1 /* dsts */
            arraylength
            iload 3 /* length */
            isub
            if_icmple 2
         1: .line 333
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 335
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic sun.nio.ch.Util.subsequence:([Ljava/nio/ByteBuffer;II)[Ljava/nio/ByteBuffer;
            invokevirtual sun.nio.ch.SocketChannelImpl.read0:([Ljava/nio/ByteBuffer;)J
            lreturn
        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    3     0    this  Lsun/nio/ch/SocketChannelImpl;
            0    3     1    dsts  [Ljava/nio/ByteBuffer;
            0    3     2  offset  I
            0    3     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      dsts    
      offset  
      length  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 339
            aload 1 /* buf */
            ifnonnull 2
         1: .line 340
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 341
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 342
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         4: .line 343
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         5: .line 345
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         6: .line 346
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         7: .line 347
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 23
         8: .line 348
            aload 4
            monitorexit
         9: .line 358
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        10: .line 359
            aload 0 /* this */
            iload 3 /* n */
            ifgt 11
            iload 3 /* n */
            bipush -2
            if_icmpeq 11
            iconst_0
            goto 12
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        11: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        12: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        13: .line 360
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        14: .line 361
            iload 3 /* n */
            ifgt 16
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 362
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        16: .line 360
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object top top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 7
            monitorexit
        19: athrow
        20: .line 364
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 21
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        21: aload 2
            monitorexit
        22: .line 348
            iconst_0
            ireturn
        23: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        24: .line 346
            aload 4
            monitorexit
        25: goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: aload 4
            monitorexit
        27: athrow
        28: .line 352
      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;
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;Ljava/lang/Object;)I
            istore 3 /* n */
        29: .line 353
            iload 3 /* n */
            bipush -3
            if_icmpne 31
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 31
        30: .line 354
            goto 28
        31: .line 355
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        32: .line 358
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        33: .line 359
            aload 0 /* this */
            iload 3 /* n */
            ifgt 34
            iload 3 /* n */
            bipush -2
            if_icmpeq 34
            iconst_0
            goto 35
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl
        34: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top top int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        35: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        36: .line 360
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        37: .line 361
            iload 3 /* n */
            ifgt 39
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 39
        38: .line 362
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        39: .line 360
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        40: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: aload 7
            monitorexit
        42: athrow
        43: .line 364
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 44
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 44
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        44: .line 355
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        45: iload 6
            ireturn
        46: .line 357
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 5
        47: .line 358
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        48: .line 359
            aload 0 /* this */
            iload 3 /* n */
            ifgt 49
            iload 3 /* n */
            bipush -2
            if_icmpeq 49
            iconst_0
            goto 50
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        49: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        50: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        51: .line 360
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        52: .line 361
            iload 3 /* n */
            ifgt 54
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 54
        53: .line 362
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        54: .line 360
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        55: goto 58
      StackMap locals:
      StackMap stack: java.lang.Throwable
        56: aload 7
            monitorexit
        57: athrow
        58: .line 364
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 59
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 59
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        59: .line 365
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 3 // int n
        60: .line 341
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        61: athrow
        end local 1 // java.nio.ByteBuffer buf
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   62     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   62     1   buf  Ljava/nio/ByteBuffer;
            5   60     3     n  I
      Exception table:
        from    to  target  type
          14    17      18  any
          18    19      18  any
           7     9      26  any
          23    25      26  any
          26    27      26  any
          37    40      41  any
          41    42      41  any
           5     9      46  any
          23    32      46  any
          52    55      56  any
          56    57      56  any
           3    22      60  any
          23    45      60  any
          46    61      60  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buf   

  public long write0(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer[] bufs
         0: .line 370
            aload 1 /* bufs */
            ifnonnull 2
         1: .line 371
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 372
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 373
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         4: .line 374
            lconst_0
            lstore 3 /* n */
        start local 3 // long n
         5: .line 376
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         6: .line 377
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         7: .line 378
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 23
         8: .line 379
            aload 5
            monitorexit
         9: .line 389
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        10: .line 390
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 11
            lload 3 /* n */
            ldc -2
            lcmp
            ifeq 11
            iconst_0
            goto 12
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        11: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        12: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        13: .line 391
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 392
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 16
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 393
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        16: .line 391
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object top top top java.lang.Object
      StackMap stack:
            aload 9
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 9
            monitorexit
        19: athrow
        20: .line 395
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 21
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        21: aload 2
            monitorexit
        22: .line 379
            lconst_0
            lreturn
        23: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        24: .line 377
            aload 5
            monitorexit
        25: goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: aload 5
            monitorexit
        27: athrow
        28: .line 383
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* bufs */
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            lstore 3 /* n */
        29: .line 384
            lload 3 /* n */
            ldc -3
            lcmp
            ifne 31
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 31
        30: .line 385
            goto 28
        31: .line 386
      StackMap locals:
      StackMap stack:
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 7
        32: .line 389
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        33: .line 390
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 34
            lload 3 /* n */
            ldc -2
            lcmp
            ifeq 34
            iconst_0
            goto 35
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top top long
      StackMap stack: sun.nio.ch.SocketChannelImpl
        34: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top top long
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        35: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        36: .line 391
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        37: .line 392
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 39
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 39
        38: .line 393
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        39: .line 391
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 9
            monitorexit
        40: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: aload 9
            monitorexit
        42: athrow
        43: .line 395
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 44
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 44
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        44: .line 386
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        45: lload 7
            lreturn
        46: .line 388
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long
      StackMap stack: java.lang.Throwable
            astore 6
        47: .line 389
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        48: .line 390
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 49
            lload 3 /* n */
            ldc -2
            lcmp
            ifeq 49
            iconst_0
            goto 50
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        49: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        50: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        51: .line 391
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        52: .line 392
            lload 3 /* n */
            lconst_0
            lcmp
            ifgt 54
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 54
        53: .line 393
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        54: .line 391
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable top top java.lang.Object
      StackMap stack:
            aload 9
            monitorexit
        55: goto 58
      StackMap locals:
      StackMap stack: java.lang.Throwable
        56: aload 9
            monitorexit
        57: athrow
        58: .line 395
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object long top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 59
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 59
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        59: .line 396
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 3 // long n
        60: .line 372
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        61: athrow
        end local 1 // java.nio.ByteBuffer[] bufs
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   62     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   62     1  bufs  [Ljava/nio/ByteBuffer;
            5   60     3     n  J
      Exception table:
        from    to  target  type
          14    17      18  any
          18    19      18  any
           7     9      26  any
          23    25      26  any
          26    27      26  any
          37    40      41  any
          41    42      41  any
           5     9      46  any
          23    32      46  any
          52    55      56  any
          56    57      56  any
           3    22      60  any
          23    45      60  any
          46    61      60  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      bufs  

  public long write(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, 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 403
            iload 2 /* offset */
            iflt 1
            iload 3 /* length */
            iflt 1
            iload 2 /* offset */
            aload 1 /* srcs */
            arraylength
            iload 3 /* length */
            isub
            if_icmple 2
         1: .line 404
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic sun.nio.ch.Util.subsequence:([Ljava/nio/ByteBuffer;II)[Ljava/nio/ByteBuffer;
            invokevirtual sun.nio.ch.SocketChannelImpl.write0:([Ljava/nio/ByteBuffer;)J
            lreturn
        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    3     0    this  Lsun/nio/ch/SocketChannelImpl;
            0    3     1    srcs  [Ljava/nio/ByteBuffer;
            0    3     2  offset  I
            0    3     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

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

  public sun.nio.ch.SocketOpts options();
    descriptor: ()Lsun/nio/ch/SocketOpts;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 414
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 415
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.options:Lsun/nio/ch/SocketOpts$IP$TCP;
            ifnonnull 5
         2: .line 417
            new sun.nio.ch.SocketChannelImpl$1
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.SocketChannelImpl$1.<init>:(Lsun/nio/ch/SocketChannelImpl;)V
         3: .line 416
            astore 2 /* d */
        start local 2 // sun.nio.ch.SocketOptsImpl$Dispatcher d
         4: .line 432
            aload 0 /* this */
            new sun.nio.ch.SocketOptsImpl$IP$TCP
            dup
            aload 2 /* d */
            invokespecial sun.nio.ch.SocketOptsImpl$IP$TCP.<init>:(Lsun/nio/ch/SocketOptsImpl$Dispatcher;)V
            putfield sun.nio.ch.SocketChannelImpl.options:Lsun/nio/ch/SocketOpts$IP$TCP;
        end local 2 // sun.nio.ch.SocketOptsImpl$Dispatcher d
         5: .line 434
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.options:Lsun/nio/ch/SocketOpts$IP$TCP;
            aload 1
            monitorexit
         6: areturn
         7: .line 414
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         8: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/SocketChannelImpl;
            4    5     2     d  Lsun/nio/ch/SocketOptsImpl$Dispatcher;
      Exception table:
        from    to  target  type
           1     6       7  any
           7     8       7  any

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

  public java.net.InetSocketAddress localAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 447
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 448
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 5
         2: .line 449
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnull 4
         3: .line 450
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
            ifeq 5
         4: .line 453
      StackMap locals: java.lang.Object
      StackMap stack:
            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 455
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            invokestatic sun.nio.ch.Net.getRevealedLocalAddress:(Ljava/net/InetSocketAddress;)Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         6: areturn
         7: .line 447
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         8: athrow
        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     6       7  any
           7     8       7  any

  public java.net.SocketAddress remoteAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 460
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 461
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
            aload 1
            monitorexit
         2: areturn
         3: .line 460
      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 void bind(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)V
    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 466
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 467
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 468
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 469
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndUnconnected:()V
         4: .line 470
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnull 6
         5: .line 471
            new sun.nio.ch.AlreadyBoundException
            dup
            invokespecial sun.nio.ch.AlreadyBoundException.<init>:()V
            athrow
         6: .line 472
      StackMap locals: java.lang.Object java.lang.Object java.lang.Object
      StackMap stack:
            aload 1 /* local */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
            astore 5 /* isa */
        start local 5 // java.net.InetSocketAddress isa
         7: .line 473
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 6 /* sm */
        start local 6 // java.lang.SecurityManager sm
         8: .line 474
            aload 6 /* sm */
            ifnull 10
         9: .line 475
            aload 6 /* sm */
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.SecurityManager.checkListen:(I)V
        10: .line 477
      StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.nio.ch.Net.bind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        11: .line 478
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        end local 6 // java.lang.SecurityManager sm
        end local 5 // java.net.InetSocketAddress isa
        12: .line 468
            aload 4
            monitorexit
        13: goto 16
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
        14: aload 4
            monitorexit
        15: athrow
        16: .line 467
      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 466
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 2
            monitorexit
        23: athrow
        24: .line 482
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.net.SocketAddress local
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   25     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   25     1  local  Ljava/net/SocketAddress;
            7   12     5    isa  Ljava/net/InetSocketAddress;
            8   12     6     sm  Ljava/lang/SecurityManager;
      Exception table:
        from    to  target  type
           3    13      14  any
          14    15      14  any
           2    17      18  any
          18    19      18  any
           1    21      22  any
          22    23      22  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      local  

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

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

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

  public boolean connect(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketAddress sa
         0: .line 508
            iconst_0
            istore 2 /* trafficClass */
        start local 2 // int trafficClass
         1: .line 511
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 512
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 513
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureOpenAndUnconnected:()V
         4: .line 514
            aload 1 /* sa */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
            astore 5 /* isa */
        start local 5 // java.net.InetSocketAddress isa
         5: .line 515
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 6 /* sm */
        start local 6 // java.lang.SecurityManager sm
         6: .line 516
            aload 6 /* sm */
            ifnull 10
         7: .line 517
            aload 6 /* sm */
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
         8: .line 518
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
         9: .line 517
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
        10: .line 519
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        11: .line 520
            iconst_0
            istore 8 /* n */
        start local 8 // int n
        12: .line 523
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        13: .line 524
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 525
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 25
        15: .line 526
            aload 9
            monitorexit
        16: .line 544
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        17: .line 545
            aload 0 /* this */
            iload 8 /* n */
            ifgt 18
            iload 8 /* n */
            bipush -2
            if_icmpeq 18
            iconst_0
            goto 19
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl
        18: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        19: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        20: .line 546
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 21
            iload 8 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        21: aload 7
            monitorexit
        22: aload 4
            monitorexit
        23: aload 3
            monitorexit
        24: .line 526
            iconst_0
            ireturn
        25: .line 528
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        26: .line 524
            aload 9
            monitorexit
        27: goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: aload 9
            monitorexit
        29: athrow
        30: .line 531
      StackMap locals:
      StackMap stack:
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            astore 9 /* ia */
        start local 9 // java.net.InetAddress ia
        31: .line 532
            aload 9 /* ia */
            invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
            ifeq 33
        32: .line 533
            invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
            astore 9 /* ia */
        33: .line 534
      StackMap locals: java.net.InetAddress
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        34: .line 535
            aload 9 /* ia */
        35: .line 536
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
        36: .line 537
            iload 2 /* trafficClass */
        37: .line 534
            invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)I
            istore 8 /* n */
        38: .line 538
            iload 8 /* n */
            bipush -3
            if_icmpne 48
        39: .line 539
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 48
        end local 9 // java.net.InetAddress ia
        40: .line 530
            goto 30
        41: .line 543
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 10
        42: .line 544
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        43: .line 545
            aload 0 /* this */
            iload 8 /* n */
            ifgt 44
            iload 8 /* n */
            bipush -2
            if_icmpeq 44
            iconst_0
            goto 45
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl
        44: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        45: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        46: .line 546
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 47
            iload 8 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 47
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        47: .line 547
      StackMap locals:
      StackMap stack:
            aload 10
            athrow
        48: .line 544
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        49: .line 545
            aload 0 /* this */
            iload 8 /* n */
            ifgt 50
            iload 8 /* n */
            bipush -2
            if_icmpeq 50
            iconst_0
            goto 51
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        50: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object java.net.InetSocketAddress java.lang.SecurityManager java.lang.Object int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        51: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        52: .line 546
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 56
            iload 8 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 56
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        53: .line 548
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 9 /* x */
        start local 9 // java.io.IOException x
        54: .line 552
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        55: .line 553
            aload 9 /* x */
            athrow
        end local 9 // java.io.IOException x
        56: .line 555
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        57: .line 556
            aload 0 /* this */
            aload 5 /* isa */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
        58: .line 557
            iload 8 /* n */
            ifle 65
        59: .line 561
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        60: .line 562
            aload 9
            monitorexit
        61: aload 7
            monitorexit
        62: aload 4
            monitorexit
        63: aload 3
            monitorexit
        64: iconst_1
            ireturn
        65: .line 566
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifne 67
        66: .line 567
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.state:I
            goto 68
        67: .line 569
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 68
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        68: .line 555
      StackMap locals:
      StackMap stack:
            aload 9
            monitorexit
        69: goto 72
      StackMap locals:
      StackMap stack: java.lang.Throwable
        70: aload 9
            monitorexit
        71: athrow
        end local 8 // int n
        72: .line 519
      StackMap locals:
      StackMap stack:
            aload 7
            monitorexit
        73: goto 76
      StackMap locals:
      StackMap stack: java.lang.Throwable
        74: aload 7
            monitorexit
        75: athrow
        76: .line 572
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        77: aload 3
            monitorexit
        78: iconst_0
            ireturn
        end local 6 // java.lang.SecurityManager sm
        end local 5 // java.net.InetSocketAddress isa
        79: .line 512
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        80: athrow
        81: .line 511
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        82: athrow
        end local 2 // int trafficClass
        end local 1 // java.net.SocketAddress sa
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   83     0          this  Lsun/nio/ch/SocketChannelImpl;
            0   83     1            sa  Ljava/net/SocketAddress;
            1   83     2  trafficClass  I
            5   79     5           isa  Ljava/net/InetSocketAddress;
            6   79     6            sm  Ljava/lang/SecurityManager;
           12   72     8             n  I
           31   40     9            ia  Ljava/net/InetAddress;
           54   56     9             x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          14    16      28  any
          25    27      28  any
          28    29      28  any
          12    16      41  any
          25    41      41  any
          12    21      53  Class java.io.IOException
          25    53      53  Class java.io.IOException
          57    61      70  any
          65    69      70  any
          70    71      70  any
          11    22      74  any
          25    62      74  any
          65    73      74  any
          74    75      74  any
           3    23      79  any
          25    63      79  any
          65    77      79  any
          79    80      79  any
           2    24      81  any
          25    64      81  any
          65    78      81  any
          79    82      81  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      sa    

  public boolean finishConnect();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 578
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 579
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 580
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 581
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 582
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 583
      StackMap locals: java.lang.Object java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 10
         6: .line 584
            aload 3
            monitorexit
         7: aload 2
            monitorexit
         8: aload 1
            monitorexit
         9: iconst_1
            ireturn
        10: .line 585
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpeq 12
        11: .line 586
            new java.nio.channels.NoConnectionPendingException
            dup
            invokespecial java.nio.channels.NoConnectionPendingException.<init>:()V
            athrow
        12: .line 580
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        13: goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: aload 3
            monitorexit
        15: athrow
        16: .line 588
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* n */
        start local 3 // int n
        17: .line 591
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        18: .line 592
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        19: .line 593
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        20: .line 594
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 39
        21: .line 595
            aload 5
            monitorexit
        22: aload 4
            monitorexit
        23: .line 625
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        24: .line 626
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        25: .line 627
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 28
        26: .line 628
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        27: .line 634
            iconst_0
            istore 3 /* n */
        28: .line 625
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object java.lang.Object top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 7
            monitorexit
        31: athrow
        32: .line 637
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            ifgt 33
            iload 3 /* n */
            bipush -2
            if_icmpeq 33
            iconst_0
            goto 34
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        33: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object java.lang.Object
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        34: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        35: .line 638
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 36
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 36
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        36: aload 2
            monitorexit
        37: aload 1
            monitorexit
        38: .line 595
            iconst_0
            ireturn
        39: .line 597
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        40: .line 593
            aload 5
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 5
            monitorexit
        43: athrow
        44: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifne 51
        45: .line 601
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
        46: .line 602
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        47: .line 601
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
        48: .line 603
            iload 3 /* n */
            bipush -3
            if_icmpne 59
        49: .line 604
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 59
        50: .line 600
            goto 45
        51: .line 610
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
        52: .line 611
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        53: .line 610
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
        54: .line 612
            iload 3 /* n */
            ifne 56
        55: .line 615
            goto 51
        56: .line 617
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            bipush -3
            if_icmpne 59
        57: .line 618
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 59
        58: .line 609
            goto 51
        59: .line 592
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        60: goto 78
      StackMap locals:
      StackMap stack: java.lang.Throwable
        61: aload 4
            monitorexit
        62: athrow
        63: .line 624
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 6
        64: .line 625
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        65: .line 626
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        66: .line 627
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 69
        67: .line 628
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        68: .line 634
            iconst_0
            istore 3 /* n */
        69: .line 625
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int top top java.lang.Throwable java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        70: goto 73
      StackMap locals:
      StackMap stack: java.lang.Throwable
        71: aload 7
            monitorexit
        72: athrow
        73: .line 637
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            ifgt 74
            iload 3 /* n */
            bipush -2
            if_icmpeq 74
            iconst_0
            goto 75
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        74: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int top top java.lang.Throwable
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        75: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        76: .line 638
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 77
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 77
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        77: .line 639
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        78: .line 625
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        79: .line 626
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        80: .line 627
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 83
        81: .line 628
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        82: .line 634
            iconst_0
            istore 3 /* n */
        83: .line 625
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int top top top java.lang.Object
      StackMap stack:
            aload 7
            monitorexit
        84: goto 87
      StackMap locals:
      StackMap stack: java.lang.Throwable
        85: aload 7
            monitorexit
        86: athrow
        87: .line 637
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            ifgt 88
            iload 3 /* n */
            bipush -2
            if_icmpeq 88
            iconst_0
            goto 89
      StackMap locals:
      StackMap stack: sun.nio.ch.SocketChannelImpl
        88: iconst_1
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack: sun.nio.ch.SocketChannelImpl int
        89: invokevirtual sun.nio.ch.SocketChannelImpl.end:(Z)V
        90: .line 638
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 94
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 94
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        91: .line 640
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 4 /* x */
        start local 4 // java.io.IOException x
        92: .line 644
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        93: .line 645
            aload 4 /* x */
            athrow
        end local 4 // java.io.IOException x
        94: .line 647
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifle 104
        95: .line 648
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        96: .line 649
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        97: .line 648
            aload 4
            monitorexit
        98: goto 101
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int java.lang.Object
      StackMap stack: java.lang.Throwable
        99: aload 4
            monitorexit
       100: athrow
       101: .line 651
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       102: aload 1
            monitorexit
       103: iconst_1
            ireturn
       104: .line 653
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       105: aload 1
            monitorexit
       106: iconst_0
            ireturn
        end local 3 // int n
       107: .line 579
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
       108: athrow
       109: .line 578
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
       110: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0  111     0  this  Lsun/nio/ch/SocketChannelImpl;
           17  107     3     n  I
           92   94     4     x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     7      14  any
          10    13      14  any
          14    15      14  any
          24    29      30  any
          30    31      30  any
          20    22      42  any
          39    41      42  any
          42    43      42  any
          19    23      61  any
          39    60      61  any
          61    62      61  any
          17    23      63  any
          39    63      63  any
          65    70      71  any
          71    72      71  any
          79    84      85  any
          85    86      85  any
          17    36      91  Class java.io.IOException
          39    91      91  Class java.io.IOException
          96    98      99  any
          99   100      99  any
           2     8     107  any
          10    37     107  any
          39   102     107  any
         104   105     107  any
         107   108     107  any
           1     9     109  any
          10    38     109  any
          39   103     109  any
         104   106     109  any
         107   110     109  any
    Exceptions:
      throws java.io.IOException

  public void shutdownInput();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 663
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 664
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 665
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 666
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         4: .line 667
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
            invokestatic sun.nio.ch.SocketChannelImpl.shutdown:(Ljava/io/FileDescriptor;I)V
         5: .line 668
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifeq 7
         6: .line 669
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         7: .line 663
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 671
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException

  public void shutdownOutput();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 674
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 675
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 676
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 677
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         4: .line 678
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
            invokestatic sun.nio.ch.SocketChannelImpl.shutdown:(Ljava/io/FileDescriptor;I)V
         5: .line 679
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifeq 7
         6: .line 680
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         7: .line 674
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 682
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException

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

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

  protected void implCloseSelectableChannel();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 702
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 703
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         2: .line 704
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         3: .line 711
            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
         4: .line 717
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifeq 6
         5: .line 718
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         6: .line 720
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifeq 8
         7: .line 721
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         8: .line 733
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isRegistered:()Z
            ifne 10
         9: .line 734
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        10: .line 702
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 1
            monitorexit
        13: athrow
        14: .line 736
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    Exceptions:
      throws java.io.IOException

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

  public boolean translateReadyOps(int, int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (IILsun/nio/ch/SelectionKeyImpl;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // int initialOps
        start local 3 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 765
            aload 3 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioInterestOps:()I
            istore 4 /* intOps */
        start local 4 // int intOps
         1: .line 766
            aload 3 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:()I
            istore 5 /* oldOps */
        start local 5 // int oldOps
         2: .line 767
            iload 2 /* initialOps */
            istore 6 /* newOps */
        start local 6 // int newOps
         3: .line 769
            iload 1 /* ops */
            bipush 32
            iand
            ifeq 5
         4: .line 773
            iconst_0
            ireturn
         5: .line 776
      StackMap locals: int int int
      StackMap stack:
            iload 1 /* ops */
            bipush 24
            iand
            ifeq 11
         6: .line 778
            iload 4 /* intOps */
            istore 6 /* newOps */
         7: .line 779
            aload 3 /* sk */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
         8: .line 782
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
         9: .line 783
            iload 6 /* newOps */
            iload 5 /* oldOps */
            iconst_m1
            ixor
            iand
            ifeq 10
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_0
            ireturn
        11: .line 786
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            iconst_1
            iand
            ifeq 15
        12: .line 787
            iload 4 /* intOps */
            iconst_1
            iand
            ifeq 15
        13: .line 788
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 15
        14: .line 789
            iload 6 /* newOps */
            iconst_1
            ior
            istore 6 /* newOps */
        15: .line 791
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            iconst_4
            iand
            ifeq 20
        16: .line 792
            iload 4 /* intOps */
            bipush 8
            iand
            ifeq 20
        17: .line 793
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            ifeq 18
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 20
        18: .line 794
      StackMap locals:
      StackMap stack:
            iload 6 /* newOps */
            bipush 8
            ior
            istore 6 /* newOps */
        19: .line 795
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        20: .line 798
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            iconst_4
            iand
            ifeq 24
        21: .line 799
            iload 4 /* intOps */
            iconst_4
            iand
            ifeq 24
        22: .line 800
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 24
        23: .line 801
            iload 6 /* newOps */
            iconst_4
            ior
            istore 6 /* newOps */
        24: .line 803
      StackMap locals:
      StackMap stack:
            aload 3 /* sk */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
        25: .line 804
            iload 6 /* newOps */
            iload 5 /* oldOps */
            iconst_m1
            ixor
            iand
            ifeq 26
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        26: iconst_0
            ireturn
        end local 6 // int newOps
        end local 5 // int oldOps
        end local 4 // int intOps
        end local 3 // sun.nio.ch.SelectionKeyImpl sk
        end local 2 // int initialOps
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Lsun/nio/ch/SocketChannelImpl;
            0   27     1         ops  I
            0   27     2  initialOps  I
            0   27     3          sk  Lsun/nio/ch/SelectionKeyImpl;
            1   27     4      intOps  I
            2   27     5      oldOps  I
            3   27     6      newOps  I
    MethodParameters:
            Name  Flags
      ops         
      initialOps  
      sk          

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

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

  public void translateAndSetInterestOps(int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (ILsun/nio/ch/SelectionKeyImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 819
            iconst_0
            istore 3 /* newOps */
        start local 3 // int newOps
         1: .line 820
            iload 1 /* ops */
            iconst_1
            iand
            ifeq 3
         2: .line 821
            iload 3 /* newOps */
            iconst_1
            ior
            istore 3 /* newOps */
         3: .line 822
      StackMap locals: int
      StackMap stack:
            iload 1 /* ops */
            iconst_4
            iand
            ifeq 5
         4: .line 823
            iload 3 /* newOps */
            iconst_4
            ior
            istore 3 /* newOps */
         5: .line 824
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            bipush 8
            iand
            ifeq 7
         6: .line 825
            iload 3 /* newOps */
            iconst_4
            ior
            istore 3 /* newOps */
         7: .line 826
      StackMap locals:
      StackMap stack:
            aload 2 /* sk */
            getfield sun.nio.ch.SelectionKeyImpl.selector:Lsun/nio/ch/SelectorImpl;
            aload 2 /* sk */
            iload 3 /* newOps */
            invokevirtual sun.nio.ch.SelectorImpl.putEventOps:(Lsun/nio/ch/SelectionKeyImpl;I)V
         8: .line 827
            return
        end local 3 // int newOps
        end local 2 // sun.nio.ch.SelectionKeyImpl sk
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lsun/nio/ch/SocketChannelImpl;
            0    9     1     ops  I
            0    9     2      sk  Lsun/nio/ch/SelectionKeyImpl;
            1    9     3  newOps  I
    MethodParameters:
      Name  Flags
      ops   
      sk    

  public java.io.FileDescriptor getFD();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 830
            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 834
            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 839
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuffer sb
         1: .line 840
            aload 1 /* sb */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         2: .line 841
            aload 1 /* sb */
            bipush 91
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         3: .line 842
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 843
            aload 1 /* sb */
            ldc "closed"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
            goto 27
         5: .line 845
      StackMap locals: java.lang.StringBuffer
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         6: .line 846
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            tableswitch { // 0 - 2
                    0: 7
                    1: 9
                    2: 11
              default: 16
          }
         7: .line 848
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* sb */
            ldc "unconnected"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
         8: .line 849
            goto 16
         9: .line 851
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connection-pending"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        10: .line 852
            goto 16
        11: .line 854
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connected"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        12: .line 855
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 14
        13: .line 856
            aload 1 /* sb */
            ldc " ishut"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        14: .line 857
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 858
            aload 1 /* sb */
            ldc " oshut"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        16: .line 861
      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 862
            aload 3 /* addr */
            ifnull 20
        18: .line 863
            aload 1 /* sb */
            ldc " local="
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        19: .line 864
            aload 1 /* sb */
            aload 3 /* addr */
            invokestatic sun.nio.ch.Net.getRevealedLocalAddressAsString:(Ljava/net/InetSocketAddress;)Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        20: .line 866
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/SocketAddress;
            ifnull 23
        21: .line 867
            aload 1 /* sb */
            ldc " remote="
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        22: .line 868
            aload 1 /* sb */
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/SocketAddress;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        end local 3 // java.net.InetSocketAddress addr
        23: .line 845
      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 872
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        28: .line 873
            aload 1 /* sb */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuffer sb
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   29     0  this  Lsun/nio/ch/SocketChannelImpl;
            1   29     1    sb  Ljava/lang/StringBuffer;
           17   23     3  addr  Ljava/net/InetSocketAddress;
      Exception table:
        from    to  target  type
           6    24      25  any
          25    26      25  any

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

  private static native void shutdown(java.io.FileDescriptor, int);
    descriptor: (Ljava/io/FileDescriptor;I)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      how   
}
SourceFile: "SocketChannelImpl.java"
NestMembers:
  sun.nio.ch.SocketChannelImpl$1
InnerClasses:
  sun.nio.ch.SocketChannelImpl$1
  public abstract IP = sun.nio.ch.SocketOpts$IP of sun.nio.ch.SocketOpts
  public abstract TCP = sun.nio.ch.SocketOpts$IP$TCP of sun.nio.ch.SocketOpts$IP
  abstract Dispatcher = sun.nio.ch.SocketOptsImpl$Dispatcher of sun.nio.ch.SocketOptsImpl
  IP = sun.nio.ch.SocketOptsImpl$IP of sun.nio.ch.SocketOptsImpl
  public TCP = sun.nio.ch.SocketOptsImpl$IP$TCP of sun.nio.ch.SocketOptsImpl$IP