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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 44
            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 1034
            invokestatic sun.nio.ch.IOUtil.load:()V
         4: .line 1035
            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 1036
            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 102
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 58
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 61
            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 64
            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 68
            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 82
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 89
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 90
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 91
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 103
            aload 0 /* this */
            iconst_1
            invokestatic sun.nio.ch.Net.socket:(Z)Ljava/io/FileDescriptor;
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        11: .line 104
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        12: .line 105
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 106
            return
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/nio/ch/SocketChannelImpl;
            0   14     1    sp  Ljava/nio/channels/spi/SelectorProvider;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      sp    

  void <init>(java.nio.channels.spi.SelectorProvider, java.io.FileDescriptor, boolean);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;Ljava/io/FileDescriptor;Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
        start local 2 // java.io.FileDescriptor fd
        start local 3 // boolean bound
         0: .line 113
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 58
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 61
            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 64
            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 68
            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 82
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 89
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 90
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 91
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 114
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        11: .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
        12: .line 116
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 117
            iload 3 /* bound */
            ifeq 15
        14: .line 118
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        15: .line 119
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.channels.spi.SelectorProvider java.io.FileDescriptor int
      StackMap stack:
            return
        end local 3 // boolean bound
        end local 2 // java.io.FileDescriptor fd
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   16     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   16     1     sp  Ljava/nio/channels/spi/SelectorProvider;
            0   16     2     fd  Ljava/io/FileDescriptor;
            0   16     3  bound  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      sp     
      fd     
      bound  

  void <init>(java.nio.channels.spi.SelectorProvider, java.io.FileDescriptor, java.net.InetSocketAddress);
    descriptor: (Ljava/nio/channels/spi/SelectorProvider;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.channels.spi.SelectorProvider sp
        start local 2 // java.io.FileDescriptor fd
        start local 3 // java.net.InetSocketAddress remote
         0: .line 127
            aload 0 /* this */
            aload 1 /* sp */
            invokespecial java.nio.channels.SocketChannel.<init>:(Ljava/nio/channels/spi/SelectorProvider;)V
         1: .line 57
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 58
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         3: .line 61
            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 64
            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 68
            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 82
            aload 0 /* this */
            iconst_m1
            putfield sun.nio.ch.SocketChannelImpl.state:I
         7: .line 89
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         8: .line 90
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         9: .line 91
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        10: .line 128
            aload 0 /* this */
            aload 2 /* fd */
            putfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
        11: .line 129
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.SocketChannelImpl.fdVal:I
        12: .line 130
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 131
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        14: .line 132
            aload 0 /* this */
            aload 3 /* remote */
            putfield sun.nio.ch.SocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
        15: .line 133
            return
        end local 3 // java.net.InetSocketAddress remote
        end local 2 // java.io.FileDescriptor fd
        end local 1 // java.nio.channels.spi.SelectorProvider sp
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   16     1      sp  Ljava/nio/channels/spi/SelectorProvider;
            0   16     2      fd  Ljava/io/FileDescriptor;
            0   16     3  remote  Ljava/net/InetSocketAddress;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      sp      
      fd      
      remote  

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

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

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

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

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

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

  private boolean ensureReadOpen();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 254
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 255
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 256
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 257
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 5
         4: .line 258
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         5: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 8
         6: .line 260
            aload 1
            monitorexit
         7: iconst_0
            ireturn
         8: .line 262
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         9: iconst_1
            ireturn
        10: .line 254
      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 267
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 268
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 269
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 270
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 5
         4: .line 271
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 272
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isConnected:()Z
            ifne 7
         6: .line 273
            new java.nio.channels.NotYetConnectedException
            dup
            invokespecial java.nio.channels.NotYetConnectedException.<init>:()V
            athrow
         7: .line 267
      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 275
      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 278
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 279
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
         2: .line 280
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 4
         3: .line 281
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
         4: .line 278
      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 283
      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 286
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 287
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
         2: .line 288
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 4
         3: .line 289
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
         4: .line 286
      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 291
      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=5, locals=8, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 295
            aload 1 /* buf */
            ifnonnull 2
         1: .line 296
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 299
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureReadOpen:()Z
            ifne 6
         4: .line 300
            aload 2
            monitorexit
         5: iconst_m1
            ireturn
         6: .line 301
      StackMap locals: java.lang.Object
      StackMap stack:
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         7: .line 307
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         8: .line 309
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         9: .line 310
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 27
        10: .line 318
            aload 4
            monitorexit
        11: .line 389
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        12: .line 406
            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 410
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        16: .line 411
            iload 3 /* n */
            ifgt 20
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 20
        17: .line 412
            aload 7
            monitorexit
        18: aload 2
            monitorexit
        19: iconst_m1
            ireturn
        20: .line 410
      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 415
      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 318
            iconst_0
            ireturn
        27: .line 325
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        28: .line 309
            aload 4
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 4
            monitorexit
        31: athrow
        32: .line 379
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* buf */
            ldc -1
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 3 /* n */
        33: .line 380
            iload 3 /* n */
            bipush -3
            if_icmpne 35
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 35
        34: .line 383
            goto 32
        35: .line 385
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        36: .line 389
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        37: .line 406
            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 410
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        41: .line 411
            iload 3 /* n */
            ifgt 45
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 45
        42: .line 412
            aload 7
            monitorexit
        43: aload 2
            monitorexit
        44: iconst_m1
            ireturn
        45: .line 410
      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 415
      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 385
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        51: iload 6
            ireturn
        52: .line 388
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 5
        53: .line 389
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        54: .line 406
            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 410
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        58: .line 411
            iload 3 /* n */
            ifgt 62
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 62
        59: .line 412
            aload 7
            monitorexit
        60: aload 2
            monitorexit
        61: iconst_m1
            ireturn
        62: .line 410
      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 415
      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 417
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 3 // int n
        68: .line 298
      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   

  public long read(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, 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 424
            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 425
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 426
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 427
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureReadOpen:()Z
            ifne 6
         4: .line 428
            aload 4
            monitorexit
         5: ldc -1
            lreturn
         6: .line 429
      StackMap locals: java.lang.Object
      StackMap stack:
            lconst_0
            lstore 5 /* n */
        start local 5 // long n
         7: .line 431
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         8: .line 432
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
         9: .line 433
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 27
        10: .line 434
            aload 7
            monitorexit
        11: .line 445
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        12: .line 446
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 13
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 13
            iconst_0
            goto 14
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int 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[] int int 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 447
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        16: .line 448
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 20
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 20
        17: .line 449
            aload 11
            monitorexit
        18: aload 4
            monitorexit
        19: ldc -1
            lreturn
        20: .line 447
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top top java.lang.Object
      StackMap stack:
            aload 11
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 11
            monitorexit
        23: athrow
        24: .line 451
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 25
            lload 5 /* 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 4
            monitorexit
        26: .line 434
            lconst_0
            lreturn
        27: .line 435
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        28: .line 432
            aload 7
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 7
            monitorexit
        31: athrow
        32: .line 439
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;IILsun/nio/ch/NativeDispatcher;)J
            lstore 5 /* n */
        33: .line 440
            lload 5 /* n */
            ldc -3
            lcmp
            ifne 35
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 35
        34: .line 441
            goto 32
        35: .line 442
      StackMap locals:
      StackMap stack:
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 9
        36: .line 445
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        37: .line 446
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 38
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 38
            iconst_0
            goto 39
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int 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[] int int 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 447
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        41: .line 448
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 45
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 45
        42: .line 449
            aload 11
            monitorexit
        43: aload 4
            monitorexit
        44: ldc -1
            lreturn
        45: .line 447
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 11
            monitorexit
        46: goto 49
      StackMap locals:
      StackMap stack: java.lang.Throwable
        47: aload 11
            monitorexit
        48: athrow
        49: .line 451
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 50
            lload 5 /* 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 442
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        51: lload 9
            lreturn
        52: .line 444
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long
      StackMap stack: java.lang.Throwable
            astore 8
        53: .line 445
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.readerCleanup:()V
        54: .line 446
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 55
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 55
            iconst_0
            goto 56
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int 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[] int int 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 447
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        58: .line 448
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 62
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 62
        59: .line 449
            aload 11
            monitorexit
        60: aload 4
            monitorexit
        61: ldc -1
            lreturn
        62: .line 447
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long top java.lang.Throwable top top java.lang.Object
      StackMap stack:
            aload 11
            monitorexit
        63: goto 66
      StackMap locals:
      StackMap stack: java.lang.Throwable
        64: aload 11
            monitorexit
        65: athrow
        66: .line 451
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 67
            lload 5 /* 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 452
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        end local 5 // long n
        68: .line 426
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        69: athrow
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   70     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   70     1    dsts  [Ljava/nio/ByteBuffer;
            0   70     2  offset  I
            0   70     3  length  I
            7   68     5       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
      dsts    
      offset  
      length  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.nio.ByteBuffer buf
         0: .line 457
            aload 1 /* buf */
            ifnonnull 2
         1: .line 458
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 460
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         4: .line 461
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         5: .line 463
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         6: .line 464
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         7: .line 465
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 23
         8: .line 466
            aload 4
            monitorexit
         9: .line 476
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        10: .line 477
            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 478
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        14: .line 479
            iload 3 /* n */
            ifgt 16
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 480
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        16: .line 478
      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 482
      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 466
            iconst_0
            ireturn
        23: .line 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        24: .line 464
            aload 4
            monitorexit
        25: goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: aload 4
            monitorexit
        27: athrow
        28: .line 470
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* buf */
            ldc -1
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 3 /* n */
        29: .line 471
            iload 3 /* n */
            bipush -3
            if_icmpne 31
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 31
        30: .line 472
            goto 28
        31: .line 473
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        32: .line 476
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        33: .line 477
            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 478
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        37: .line 479
            iload 3 /* n */
            ifgt 39
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 39
        38: .line 480
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        39: .line 478
      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 482
      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 473
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        45: iload 6
            ireturn
        46: .line 475
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 5
        47: .line 476
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        48: .line 477
            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 478
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        52: .line 479
            iload 3 /* n */
            ifgt 54
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 54
        53: .line 480
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        54: .line 478
      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 482
      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 483
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 3 // int n
        60: .line 459
      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 write(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, 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 490
            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 491
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 492
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 493
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.ensureWriteOpen:()V
         4: .line 494
            lconst_0
            lstore 5 /* n */
        start local 5 // long n
         5: .line 496
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
         6: .line 497
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
         7: .line 498
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 23
         8: .line 499
            aload 7
            monitorexit
         9: .line 509
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        10: .line 510
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 11
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 11
            iconst_0
            goto 12
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int 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[] int int 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 511
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        14: .line 512
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 16
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 513
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        16: .line 511
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object top top top java.lang.Object
      StackMap stack:
            aload 11
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 11
            monitorexit
        19: athrow
        20: .line 515
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long java.lang.Object
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 21
            lload 5 /* 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 4
            monitorexit
        22: .line 499
            lconst_0
            lreturn
        23: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.writerThread:J
        24: .line 497
            aload 7
            monitorexit
        25: goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: aload 7
            monitorexit
        27: athrow
        28: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;IILsun/nio/ch/NativeDispatcher;)J
            lstore 5 /* n */
        29: .line 504
            lload 5 /* n */
            ldc -3
            lcmp
            ifne 31
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 31
        30: .line 505
            goto 28
        31: .line 506
      StackMap locals:
      StackMap stack:
            lload 5 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 9
        32: .line 509
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        33: .line 510
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 34
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 34
            iconst_0
            goto 35
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int 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[] int int 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 511
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        37: .line 512
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 39
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 39
        38: .line 513
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        39: .line 511
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 11
            monitorexit
        40: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: aload 11
            monitorexit
        42: athrow
        43: .line 515
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 44
            lload 5 /* 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 506
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        45: lload 9
            lreturn
        46: .line 508
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long
      StackMap stack: java.lang.Throwable
            astore 8
        47: .line 509
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.writerCleanup:()V
        48: .line 510
            aload 0 /* this */
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 49
            lload 5 /* n */
            ldc -2
            lcmp
            ifeq 49
            iconst_0
            goto 50
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int 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[] int int 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 511
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        52: .line 512
            lload 5 /* n */
            lconst_0
            lcmp
            ifgt 54
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 54
        53: .line 513
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        54: .line 511
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long top java.lang.Throwable top top java.lang.Object
      StackMap stack:
            aload 11
            monitorexit
        55: goto 58
      StackMap locals:
      StackMap stack: java.lang.Throwable
        56: aload 11
            monitorexit
        57: athrow
        58: .line 515
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object long top java.lang.Throwable
      StackMap stack:
            getstatic sun.nio.ch.SocketChannelImpl.$assertionsDisabled:Z
            ifne 59
            lload 5 /* 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 516
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        end local 5 // long n
        60: .line 492
      StackMap locals: sun.nio.ch.SocketChannelImpl java.nio.ByteBuffer[] int int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        61: athrow
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   62     0    this  Lsun/nio/ch/SocketChannelImpl;
            0   62     1    srcs  [Ljava/nio/ByteBuffer;
            0   62     2  offset  I
            0   62     3  length  I
            5   60     5       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
      srcs    
      offset  
      length  

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

  protected void implConfigureBlocking(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // boolean block
         0: .line 551
            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 552
            return
        end local 1 // boolean block
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lsun/nio/ch/SocketChannelImpl;
            0    2     1  block  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      block  

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

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

  public java.nio.channels.SocketChannel bind(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // java.net.SocketAddress local
         0: .line 568
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 569
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 570
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         3: .line 571
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 572
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 573
      StackMap locals: java.lang.Object java.lang.Object java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 7
         6: .line 574
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         7: .line 575
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnull 9
         8: .line 576
            new java.nio.channels.AlreadyBoundException
            dup
            invokespecial java.nio.channels.AlreadyBoundException.<init>:()V
            athrow
         9: .line 577
      StackMap locals:
      StackMap stack:
            aload 1 /* local */
            ifnonnull 11
        10: .line 578
            new java.net.InetSocketAddress
            dup
            iconst_0
            invokespecial java.net.InetSocketAddress.<init>:(I)V
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 1 /* local */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
        12: .line 577
      StackMap locals:
      StackMap stack: java.net.InetSocketAddress
            astore 5 /* isa */
        start local 5 // java.net.InetSocketAddress isa
        13: .line 579
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 6 /* sm */
        start local 6 // java.lang.SecurityManager sm
        14: .line 580
            aload 6 /* sm */
            ifnull 16
        15: .line 581
            aload 6 /* sm */
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.SecurityManager.checkListen:(I)V
        16: .line 583
      StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.net.NetHooks.beforeTcpBind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        17: .line 584
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.nio.ch.Net.bind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        18: .line 585
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        end local 6 // java.lang.SecurityManager sm
        end local 5 // java.net.InetSocketAddress isa
        19: .line 570
            aload 4
            monitorexit
        20: goto 23
      StackMap locals: sun.nio.ch.SocketChannelImpl java.net.SocketAddress java.lang.Object java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
        21: aload 4
            monitorexit
        22: athrow
        23: .line 569
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        24: goto 27
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: aload 3
            monitorexit
        26: athrow
        27: .line 568
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        28: goto 31
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: aload 2
            monitorexit
        30: athrow
        31: .line 589
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // java.net.SocketAddress local
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   32     0   this  Lsun/nio/ch/SocketChannelImpl;
            0   32     1  local  Ljava/net/SocketAddress;
           13   19     5    isa  Ljava/net/InetSocketAddress;
           14   19     6     sm  Ljava/lang/SecurityManager;
      Exception table:
        from    to  target  type
           3    20      21  any
          21    22      21  any
           2    24      25  any
          25    26      25  any
           1    28      29  any
          29    30      29  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      local  

  public boolean isConnected();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 593
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 594
            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 593
      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 599
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 600
            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 599
      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 605
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 606
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 3
         2: .line 607
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 608
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 5
         4: .line 609
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            athrow
         5: .line 610
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpne 7
         6: .line 611
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         7: .line 605
      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 613
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException

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

  public boolean finishConnect();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 693
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 694
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writeLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 695
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         3: .line 696
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 697
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         5: .line 698
      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 699
            aload 3
            monitorexit
         7: aload 2
            monitorexit
         8: aload 1
            monitorexit
         9: iconst_1
            ireturn
        10: .line 700
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_1
            if_icmpeq 12
        11: .line 701
            new java.nio.channels.NoConnectionPendingException
            dup
            invokespecial java.nio.channels.NoConnectionPendingException.<init>:()V
            athrow
        12: .line 695
      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 703
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* n */
        start local 3 // int n
        17: .line 706
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.begin:()V
        18: .line 707
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.blockingLock:()Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        19: .line 708
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        20: .line 709
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 39
        21: .line 710
            aload 5
            monitorexit
        22: aload 4
            monitorexit
        23: .line 740
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        24: .line 741
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        25: .line 742
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 28
        26: .line 743
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        27: .line 749
            iconst_0
            istore 3 /* n */
        28: .line 740
      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 752
      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 753
            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 710
            iconst_0
            ireturn
        39: .line 712
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        40: .line 708
            aload 5
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 5
            monitorexit
        43: athrow
        44: .line 714
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isBlocking:()Z
            ifne 51
        45: .line 716
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
        46: .line 717
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        47: .line 716
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
        48: .line 718
            iload 3 /* n */
            bipush -3
            if_icmpne 59
        49: .line 719
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 59
        50: .line 715
            goto 45
        51: .line 725
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
        52: .line 726
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        53: .line 725
            invokestatic sun.nio.ch.SocketChannelImpl.checkConnect:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
        54: .line 727
            iload 3 /* n */
            ifne 56
        55: .line 730
            goto 51
        56: .line 732
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            bipush -3
            if_icmpne 59
        57: .line 733
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 59
        58: .line 724
            goto 51
        59: .line 707
      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 739
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 6
        64: .line 740
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        65: .line 741
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        66: .line 742
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 69
        67: .line 743
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        68: .line 749
            iconst_0
            istore 3 /* n */
        69: .line 740
      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 752
      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 753
            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 754
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        78: .line 740
      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 741
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.SocketChannelImpl.readerThread:J
        80: .line 742
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_3
            if_icmpne 83
        81: .line 743
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        82: .line 749
            iconst_0
            istore 3 /* n */
        83: .line 740
      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 752
      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 753
            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 755
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 4 /* x */
        start local 4 // java.io.IOException x
        92: .line 759
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.close:()V
        93: .line 760
            aload 4 /* x */
            athrow
        end local 4 // java.io.IOException x
        94: .line 762
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            ifle 106
        95: .line 763
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        96: .line 764
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.SocketChannelImpl.state:I
        97: .line 765
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifeq 99
        98: .line 766
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.SocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
        99: .line 763
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4
            monitorexit
       100: goto 103
      StackMap locals:
      StackMap stack: java.lang.Throwable
       101: aload 4
            monitorexit
       102: athrow
       103: .line 768
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       104: aload 1
            monitorexit
       105: iconst_1
            ireturn
       106: .line 770
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       107: aload 1
            monitorexit
       108: iconst_0
            ireturn
        end local 3 // int n
       109: .line 694
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
       110: athrow
       111: .line 693
      StackMap locals: sun.nio.ch.SocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
       112: athrow
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0  113     0  this  Lsun/nio/ch/SocketChannelImpl;
           17  109     3     n  I
           92   94     4     x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     7      14  any
          10    13      14  any
          14    15      14  any
          24    29      30  any
          30    31      30  any
          20    22      42  any
          39    41      42  any
          42    43      42  any
          19    23      61  any
          39    60      61  any
          61    62      61  any
          17    23      63  any
          39    63      63  any
          65    70      71  any
          71    72      71  any
          79    84      85  any
          85    86      85  any
          17    36      91  Class java.io.IOException
          39    91      91  Class java.io.IOException
          96   100     101  any
         101   102     101  any
           2     8     109  any
          10    37     109  any
          39   104     109  any
         106   107     109  any
         109   110     109  any
           1     9     111  any
          10    38     111  any
          39   105     111  any
         106   108     111  any
         109   112     111  any
    Exceptions:
      throws java.io.IOException

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

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

  public boolean isInputOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 810
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 811
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 810
      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 816
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 817
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 816
      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 827
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 828
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
         2: .line 829
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
         3: .line 836
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_4
            if_icmpeq 5
         4: .line 837
            getstatic sun.nio.ch.SocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.preClose:(Ljava/io/FileDescriptor;)V
         5: .line 843
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            lconst_0
            lcmp
            ifeq 7
         6: .line 844
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.readerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         7: .line 846
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            lconst_0
            lcmp
            ifeq 9
         8: .line 847
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.writerThread:J
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
         9: .line 859
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isRegistered:()Z
            ifne 11
        10: .line 860
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.kill:()V
        11: .line 827
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 1
            monitorexit
        14: athrow
        15: .line 862
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lsun/nio/ch/SocketChannelImpl;
      Exception table:
        from    to  target  type
           1    12      13  any
          13    14      13  any
    Exceptions:
      throws java.io.IOException

  public void kill();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.SocketChannelImpl this
         0: .line 865
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 866
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_4
            if_icmpne 4
         2: .line 867
            aload 1
            monitorexit
         3: return
         4: .line 868
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_m1
            if_icmpne 8
         5: .line 869
            aload 0 /* this */
            iconst_4
            putfield sun.nio.ch.SocketChannelImpl.state:I
         6: .line 870
            aload 1
            monitorexit
         7: return
         8: .line 872
      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 877
      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 878
            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 879
            aload 0 /* this */
            iconst_4
            putfield sun.nio.ch.SocketChannelImpl.state:I
        13: .line 880
            goto 15
        14: .line 881
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_3
            putfield sun.nio.ch.SocketChannelImpl.state:I
        15: .line 865
      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 884
      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 891
            aload 3 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioInterestOps:()I
            istore 4 /* intOps */
        start local 4 // int intOps
         1: .line 892
            aload 3 /* sk */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:()I
            istore 5 /* oldOps */
        start local 5 // int oldOps
         2: .line 893
            iload 2 /* initialOps */
            istore 6 /* newOps */
        start local 6 // int newOps
         3: .line 895
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLNVAL:S
            iand
            ifeq 5
         4: .line 899
            iconst_0
            ireturn
         5: .line 902
      StackMap locals: int int int
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLERR:S
            getstatic sun.nio.ch.Net.POLLHUP:S
            ior
            iand
            ifeq 11
         6: .line 903
            iload 4 /* intOps */
            istore 6 /* newOps */
         7: .line 904
            aload 3 /* sk */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
         8: .line 907
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
         9: .line 908
            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 911
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLIN:S
            iand
            ifeq 15
        12: .line 912
            iload 4 /* intOps */
            iconst_1
            iand
            ifeq 15
        13: .line 913
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 15
        14: .line 914
            iload 6 /* newOps */
            iconst_1
            ior
            istore 6 /* newOps */
        15: .line 916
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLCONN:S
            iand
            ifeq 20
        16: .line 917
            iload 4 /* intOps */
            bipush 8
            iand
            ifeq 20
        17: .line 918
            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 919
      StackMap locals:
      StackMap stack:
            iload 6 /* newOps */
            bipush 8
            ior
            istore 6 /* newOps */
        19: .line 920
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SocketChannelImpl.readyToConnect:Z
        20: .line 923
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            getstatic sun.nio.ch.Net.POLLOUT:S
            iand
            ifeq 24
        21: .line 924
            iload 4 /* intOps */
            iconst_4
            iand
            ifeq 24
        22: .line 925
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            iconst_2
            if_icmpne 24
        23: .line 926
            iload 6 /* newOps */
            iconst_4
            ior
            istore 6 /* newOps */
        24: .line 928
      StackMap locals:
      StackMap stack:
            aload 3 /* sk */
            iload 6 /* newOps */
            invokevirtual sun.nio.ch.SelectionKeyImpl.nioReadyOps:(I)V
        25: .line 929
            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 933
            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 937
            aload 0 /* this */
            iload 1 /* ops */
            iconst_0
            aload 2 /* sk */
            invokevirtual sun.nio.ch.SocketChannelImpl.translateReadyOps:(IILsun/nio/ch/SelectionKeyImpl;)Z
            ireturn
        end local 2 // sun.nio.ch.SelectionKeyImpl sk
        end local 1 // int ops
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/SocketChannelImpl;
            0    1     1   ops  I
            0    1     2    sk  Lsun/nio/ch/SelectionKeyImpl;
    MethodParameters:
      Name  Flags
      ops   
      sk    

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

  public void translateAndSetInterestOps(int, sun.nio.ch.SelectionKeyImpl);
    descriptor: (ILsun/nio/ch/SelectionKeyImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.SocketChannelImpl this
        start local 1 // int ops
        start local 2 // sun.nio.ch.SelectionKeyImpl sk
         0: .line 966
            iconst_0
            istore 3 /* newOps */
        start local 3 // int newOps
         1: .line 967
            iload 1 /* ops */
            iconst_1
            iand
            ifeq 3
         2: .line 968
            iload 3 /* newOps */
            getstatic sun.nio.ch.Net.POLLIN:S
            ior
            istore 3 /* newOps */
         3: .line 969
      StackMap locals: int
      StackMap stack:
            iload 1 /* ops */
            iconst_4
            iand
            ifeq 5
         4: .line 970
            iload 3 /* newOps */
            getstatic sun.nio.ch.Net.POLLOUT:S
            ior
            istore 3 /* newOps */
         5: .line 971
      StackMap locals:
      StackMap stack:
            iload 1 /* ops */
            bipush 8
            iand
            ifeq 7
         6: .line 972
            iload 3 /* newOps */
            getstatic sun.nio.ch.Net.POLLCONN:S
            ior
            istore 3 /* newOps */
         7: .line 973
      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 974
            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 977
            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 981
            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 986
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuffer sb
         1: .line 987
            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 988
            aload 1 /* sb */
            bipush 91
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
         3: .line 989
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.isOpen:()Z
            ifne 5
         4: .line 990
            aload 1 /* sb */
            ldc "closed"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
            goto 27
         5: .line 992
      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 993
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.state:I
            tableswitch { // 0 - 2
                    0: 7
                    1: 9
                    2: 11
              default: 16
          }
         7: .line 995
      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 996
            goto 16
         9: .line 998
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connection-pending"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        10: .line 999
            goto 16
        11: .line 1001
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "connected"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        12: .line 1002
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isInputOpen:Z
            ifne 14
        13: .line 1003
            aload 1 /* sb */
            ldc " ishut"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        14: .line 1004
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SocketChannelImpl.isOutputOpen:Z
            ifne 16
        15: .line 1005
            aload 1 /* sb */
            ldc " oshut"
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        16: .line 1008
      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 1009
            aload 3 /* addr */
            ifnull 20
        18: .line 1010
            aload 1 /* sb */
            ldc " local="
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        19: .line 1011
            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 1013
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SocketChannelImpl.remoteAddress:()Ljava/net/SocketAddress;
            ifnull 23
        21: .line 1014
            aload 1 /* sb */
            ldc " remote="
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        22: .line 1015
            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 992
      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 1019
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            bipush 93
            invokevirtual java.lang.StringBuffer.append:(C)Ljava/lang/StringBuffer;
            pop
        28: .line 1020
            aload 1 /* sb */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuffer sb
        end local 0 // sun.nio.ch.SocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   29     0  this  Lsun/nio/ch/SocketChannelImpl;
            1   29     1    sb  Ljava/lang/StringBuffer;
           17   23     3  addr  Ljava/net/InetSocketAddress;
      Exception table:
        from    to  target  type
           6    24      25  any
          25    26      25  any

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

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

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

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