public final class sun.nio.ch.NioSocketImpl extends java.net.SocketImpl implements sun.net.PlatformSocketImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: sun.nio.ch.NioSocketImpl
  super_class: java.net.SocketImpl
{
  private static final sun.nio.ch.NativeDispatcher nd;
    descriptor: Lsun/nio/ch/NativeDispatcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private final boolean server;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

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

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

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

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

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

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

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

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

  private java.lang.ref.Cleaner$Cleanable cleaner;
    descriptor: Ljava/lang/ref/Cleaner$Cleanable;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

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

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

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

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

  private static volatile java.util.Set<java.net.SocketOption<?>> clientSocketOptions;
    descriptor: Ljava/util/Set;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
    Signature: Ljava/util/Set<Ljava/net/SocketOption<*>;>;

  private static volatile java.util.Set<java.net.SocketOption<?>> serverSocketOptions;
    descriptor: Ljava/util/Set;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
    Signature: Ljava/util/Set<Ljava/net/SocketOption<*>;>;

  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 80
            ldc Lsun/nio/ch/NioSocketImpl;
            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.NioSocketImpl.$assertionsDisabled:Z
         3: .line 81
            new sun.nio.ch.SocketDispatcher
            dup
            invokespecial sun.nio.ch.SocketDispatcher.<init>:()V
            putstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
         4: .line 920
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // boolean server
         0: .line 135
            aload 0 /* this */
            invokespecial java.net.SocketImpl.<init>:()V
         1: .line 91
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
         2: .line 94
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
         3: .line 97
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
         4: .line 136
            aload 0 /* this */
            iload 1 /* server */
            putfield sun.nio.ch.NioSocketImpl.server:Z
         5: .line 137
            return
        end local 1 // boolean server
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/nio/ch/NioSocketImpl;
            0    6     1  server  Z
    MethodParameters:
        Name  Flags
      server  

  private boolean isOpen();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 143
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            iconst_4
            if_icmpge 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/nio/ch/NioSocketImpl;

  private void ensureOpen();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 150
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 1 /* state */
        start local 1 // int state
         1: .line 151
            iload 1 /* state */
            ifne 3
         2: .line 152
            new java.net.SocketException
            dup
            ldc "Socket not created"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 153
      StackMap locals: int
      StackMap stack:
            iload 1 /* state */
            iconst_4
            if_icmplt 5
         4: .line 154
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 155
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int state
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/nio/ch/NioSocketImpl;
            1    6     1  state  I
    Exceptions:
      throws java.net.SocketException

  private void ensureOpenAndConnected();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 161
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 1 /* state */
        start local 1 // int state
         1: .line 162
            iload 1 /* state */
            iconst_3
            if_icmpge 3
         2: .line 163
            new java.net.SocketException
            dup
            ldc "Not connected"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 164
      StackMap locals: int
      StackMap stack:
            iload 1 /* state */
            iconst_3
            if_icmple 5
         4: .line 165
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int state
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/nio/ch/NioSocketImpl;
            1    6     1  state  I
    Exceptions:
      throws java.net.SocketException

  private void park(java.io.FileDescriptor, int, long);
    descriptor: (Ljava/io/FileDescriptor;IJ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // int event
        start local 3 // long nanos
         0: .line 176
            lload 3 /* nanos */
            lconst_0
            lcmp
            ifne 3
         1: .line 177
            ldc -1
            lstore 5 /* millis */
        start local 5 // long millis
         2: .line 178
            goto 4
        end local 5 // long millis
         3: .line 179
      StackMap locals:
      StackMap stack:
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 3 /* nanos */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            lstore 5 /* millis */
        start local 5 // long millis
         4: .line 181
      StackMap locals: long
      StackMap stack:
            aload 1 /* fd */
            iload 2 /* event */
            lload 5 /* millis */
            invokestatic sun.nio.ch.Net.poll:(Ljava/io/FileDescriptor;IJ)I
            pop
         5: .line 182
            return
        end local 5 // long millis
        end local 3 // long nanos
        end local 2 // int event
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lsun/nio/ch/NioSocketImpl;
            0    6     1      fd  Ljava/io/FileDescriptor;
            0    6     2   event  I
            0    6     3   nanos  J
            2    3     5  millis  J
            4    6     5  millis  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      event  
      nanos  

  private void park(java.io.FileDescriptor, int);
    descriptor: (Ljava/io/FileDescriptor;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // int event
         0: .line 190
            aload 0 /* this */
            aload 1 /* fd */
            iload 2 /* event */
            lconst_0
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
         1: .line 191
            return
        end local 2 // int event
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lsun/nio/ch/NioSocketImpl;
            0    2     1     fd  Ljava/io/FileDescriptor;
            0    2     2  event  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      event  

  private void configureBlocking(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
         0: .line 199
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.nonBlocking:Z
            ifeq 10
         2: .line 201
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 202
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         4: .line 203
            aload 1 /* fd */
            iconst_1
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         5: .line 204
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.NioSocketImpl.nonBlocking:Z
         6: .line 201
            aload 2
            monitorexit
         7: goto 10
      StackMap locals: sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.lang.Object
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 207
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/nio/ch/NioSocketImpl;
            0   11     1    fd  Ljava/io/FileDescriptor;
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  private void configureNonBlocking(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
         0: .line 215
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.nonBlocking:Z
            ifne 10
         2: .line 217
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 218
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         4: .line 219
            aload 1 /* fd */
            iconst_0
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         5: .line 220
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.nonBlocking:Z
         6: .line 217
            aload 2
            monitorexit
         7: goto 10
      StackMap locals: sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.lang.Object
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/nio/ch/NioSocketImpl;
            0   11     1    fd  Ljava/io/FileDescriptor;
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  private java.io.FileDescriptor beginRead();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 230
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 231
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
         2: .line 232
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.NioSocketImpl.readerThread:J
         3: .line 233
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1
            monitorexit
         4: areturn
         5: .line 230
      StackMap locals: sun.nio.ch.NioSocketImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
    Exceptions:
      throws java.net.SocketException

  private void endRead(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // boolean completed
         0: .line 242
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 243
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.NioSocketImpl.readerThread:J
         2: .line 244
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 3 /* state */
        start local 3 // int state
         3: .line 245
            iload 3 /* state */
            iconst_4
            if_icmpne 5
         4: .line 246
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
         5: .line 247
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 1 /* completed */
            ifne 7
            iload 3 /* state */
            iconst_4
            if_icmplt 7
         6: .line 248
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int state
         7: .line 242
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 250
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean completed
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lsun/nio/ch/NioSocketImpl;
            0   12     1  completed  Z
            3    7     3      state  I
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
           Name  Flags
      completed  

  private int tryRead(java.io.FileDescriptor, byte[], int, int);
    descriptor: (Ljava/io/FileDescriptor;[BII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // byte[] b
        start local 3 // int off
        start local 4 // int len
         0: .line 258
            iload 4 /* len */
            invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
            astore 5 /* dst */
        start local 5 // java.nio.ByteBuffer dst
         1: .line 259
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 2
            aload 5 /* dst */
            invokevirtual java.nio.ByteBuffer.position:()I
            ifeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 261
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 1 /* fd */
            aload 5 /* dst */
            checkcast sun.nio.ch.DirectBuffer
            invokeinterface sun.nio.ch.DirectBuffer.address:()J
            iload 4 /* len */
            invokevirtual sun.nio.ch.NativeDispatcher.read:(Ljava/io/FileDescriptor;JI)I
            istore 6 /* n */
        start local 6 // int n
         3: .line 262
            iload 6 /* n */
            ifle 5
         4: .line 263
            aload 5 /* dst */
            aload 2 /* b */
            iload 3 /* off */
            iload 6 /* n */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         5: .line 265
      StackMap locals: int
      StackMap stack:
            iload 6 /* n */
            istore 8
         6: .line 267
            aload 5 /* dst */
            invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
         7: .line 265
            iload 8
            ireturn
        end local 6 // int n
         8: .line 266
      StackMap locals: sun.nio.ch.NioSocketImpl java.io.FileDescriptor byte[] int int java.nio.ByteBuffer
      StackMap stack: java.lang.Throwable
            astore 7
         9: .line 267
            aload 5 /* dst */
            invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        10: .line 268
            aload 7
            athrow
        end local 5 // java.nio.ByteBuffer dst
        end local 4 // int len
        end local 3 // int off
        end local 2 // byte[] b
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/nio/ch/NioSocketImpl;
            0   11     1    fd  Ljava/io/FileDescriptor;
            0   11     2     b  [B
            0   11     3   off  I
            0   11     4   len  I
            1   11     5   dst  Ljava/nio/ByteBuffer;
            3    8     6     n  I
      Exception table:
        from    to  target  type
           2     6       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      b     
      off   
      len   

  private int timedRead(java.io.FileDescriptor, byte[], int, int, long);
    descriptor: (Ljava/io/FileDescriptor;[BIIJ)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=6
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // byte[] b
        start local 3 // int off
        start local 4 // int len
        start local 5 // long nanos
         0: .line 278
            invokestatic java.lang.System.nanoTime:()J
            lstore 7 /* startNanos */
        start local 7 // long startNanos
         1: .line 279
            aload 0 /* this */
            aload 1 /* fd */
            aload 2 /* b */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
            istore 9 /* n */
        start local 9 // int n
         2: .line 280
            goto 8
         3: .line 281
      StackMap locals: long int
      StackMap stack:
            lload 5 /* nanos */
            invokestatic java.lang.System.nanoTime:()J
            lload 7 /* startNanos */
            lsub
            lsub
            lstore 10 /* remainingNanos */
        start local 10 // long remainingNanos
         4: .line 282
            lload 10 /* remainingNanos */
            lconst_0
            lcmp
            ifgt 6
         5: .line 283
            new java.net.SocketTimeoutException
            dup
            ldc "Read timed out"
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 285
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* fd */
            getstatic sun.nio.ch.Net.POLLIN:S
            lload 10 /* remainingNanos */
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
         7: .line 286
            aload 0 /* this */
            aload 1 /* fd */
            aload 2 /* b */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
            istore 9 /* n */
        end local 10 // long remainingNanos
         8: .line 280
      StackMap locals:
      StackMap stack:
            iload 9 /* n */
            bipush -2
            if_icmpne 9
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 3
         9: .line 288
      StackMap locals:
      StackMap stack:
            iload 9 /* n */
            ireturn
        end local 9 // int n
        end local 7 // long startNanos
        end local 5 // long nanos
        end local 4 // int len
        end local 3 // int off
        end local 2 // byte[] b
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0            this  Lsun/nio/ch/NioSocketImpl;
            0   10     1              fd  Ljava/io/FileDescriptor;
            0   10     2               b  [B
            0   10     3             off  I
            0   10     4             len  I
            0   10     5           nanos  J
            1   10     7      startNanos  J
            2   10     9               n  I
            4    8    10  remainingNanos  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      b      
      off    
      len    
      nanos  

  private int implRead(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=9, args_size=4
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 298
            iconst_0
            istore 4 /* n */
        start local 4 // int n
         1: .line 299
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.beginRead:()Ljava/io/FileDescriptor;
            astore 5 /* fd */
        start local 5 // java.io.FileDescriptor fd
         2: .line 301
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.connectionReset:Z
            ifeq 4
         3: .line 302
            new java.net.SocketException
            dup
            ldc "Connection reset"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 303
      StackMap locals: int java.io.FileDescriptor
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
            ifeq 9
         5: .line 327
            aload 0 /* this */
            iload 4 /* n */
            ifle 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack: sun.nio.ch.NioSocketImpl
         6: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor
      StackMap stack: sun.nio.ch.NioSocketImpl int
         7: invokevirtual sun.nio.ch.NioSocketImpl.endRead:(Z)V
         8: .line 304
            iconst_m1
            ireturn
         9: .line 305
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.timeout:I
            istore 6 /* timeout */
        start local 6 // int timeout
        10: .line 306
            iload 6 /* timeout */
            ifle 14
        11: .line 308
            aload 0 /* this */
            aload 5 /* fd */
            invokevirtual sun.nio.ch.NioSocketImpl.configureNonBlocking:(Ljava/io/FileDescriptor;)V
        12: .line 309
            aload 0 /* this */
            aload 5 /* fd */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            iload 6 /* timeout */
            i2l
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            invokevirtual sun.nio.ch.NioSocketImpl.timedRead:(Ljava/io/FileDescriptor;[BIIJ)I
            istore 4 /* n */
        13: .line 310
            goto 19
        14: .line 312
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 5 /* fd */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
            istore 4 /* n */
        15: .line 313
            goto 18
        16: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* fd */
            getstatic sun.nio.ch.Net.POLLIN:S
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
        17: .line 315
            aload 0 /* this */
            aload 5 /* fd */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual sun.nio.ch.NioSocketImpl.tryRead:(Ljava/io/FileDescriptor;[BII)I
            istore 4 /* n */
        18: .line 313
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            i2l
            invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
            ifeq 19
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 16
        19: .line 318
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            istore 8
        20: .line 327
            aload 0 /* this */
            iload 4 /* n */
            ifle 21
            iconst_1
            goto 22
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor int top int
      StackMap stack: sun.nio.ch.NioSocketImpl
        21: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor int top int
      StackMap stack: sun.nio.ch.NioSocketImpl int
        22: invokevirtual sun.nio.ch.NioSocketImpl.endRead:(Z)V
        23: .line 318
            iload 8
            ireturn
        end local 6 // int timeout
        24: .line 319
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor
      StackMap stack: java.net.SocketTimeoutException
            astore 6 /* e */
        start local 6 // java.net.SocketTimeoutException e
        25: .line 320
            aload 6 /* e */
            athrow
        end local 6 // java.net.SocketTimeoutException e
        26: .line 321
      StackMap locals:
      StackMap stack: sun.net.ConnectionResetException
            pop
        27: .line 322
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.connectionReset:Z
        28: .line 323
            new java.net.SocketException
            dup
            ldc "Connection reset"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 324
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        30: .line 325
            new java.net.SocketException
            dup
            aload 6 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.io.IOException ioe
        31: .line 326
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        32: .line 327
            aload 0 /* this */
            iload 4 /* n */
            ifle 33
            iconst_1
            goto 34
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl
        33: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl int
        34: invokevirtual sun.nio.ch.NioSocketImpl.endRead:(Z)V
        35: .line 328
            aload 7
            athrow
        end local 5 // java.io.FileDescriptor fd
        end local 4 // int n
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   36     0     this  Lsun/nio/ch/NioSocketImpl;
            0   36     1        b  [B
            0   36     2      off  I
            0   36     3      len  I
            1   36     4        n  I
            2   36     5       fd  Ljava/io/FileDescriptor;
           10   24     6  timeout  I
           25   26     6        e  Ljava/net/SocketTimeoutException;
           30   31     6      ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     5      24  Class java.net.SocketTimeoutException
           9    20      24  Class java.net.SocketTimeoutException
           2     5      26  Class sun.net.ConnectionResetException
           9    20      26  Class sun.net.ConnectionResetException
           2     5      29  Class java.io.IOException
           9    20      29  Class java.io.IOException
           2     5      31  any
           9    20      31  any
          24    31      31  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  private int read(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 339
            iload 2 /* off */
            iload 3 /* len */
            aload 1 /* b */
            arraylength
            invokestatic java.util.Objects.checkFromIndexSize:(III)I
            pop
         1: .line 340
            iload 3 /* len */
            ifne 3
         2: .line 341
            iconst_0
            ireturn
         3: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         4: .line 346
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readEOF:Z
            ifeq 7
         5: .line 355
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         6: .line 347
            iconst_m1
            ireturn
         7: .line 349
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ldc 131072
            invokestatic java.lang.Math.min:(II)I
            istore 4 /* size */
        start local 4 // int size
         8: .line 350
            aload 0 /* this */
            aload 1 /* b */
            iload 2 /* off */
            iload 4 /* size */
            invokevirtual sun.nio.ch.NioSocketImpl.implRead:([BII)I
            istore 5 /* n */
        start local 5 // int n
         9: .line 351
            iload 5 /* n */
            iconst_m1
            if_icmpne 11
        10: .line 352
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.readEOF:Z
        11: .line 353
      StackMap locals: int int
      StackMap stack:
            iload 5 /* n */
            istore 7
        12: .line 355
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        13: .line 353
            iload 7
            ireturn
        end local 5 // int n
        end local 4 // int size
        14: .line 354
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int
      StackMap stack: java.lang.Throwable
            astore 6
        15: .line 355
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        16: .line 356
            aload 6
            athrow
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lsun/nio/ch/NioSocketImpl;
            0   17     1     b  [B
            0   17     2   off  I
            0   17     3   len  I
            8   14     4  size  I
            9   14     5     n  I
      Exception table:
        from    to  target  type
           4     5      14  any
           7    12      14  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  private java.io.FileDescriptor beginWrite();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 365
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 366
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
         2: .line 367
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.NioSocketImpl.writerThread:J
         3: .line 368
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1
            monitorexit
         4: areturn
         5: .line 365
      StackMap locals: sun.nio.ch.NioSocketImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         6: athrow
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any
    Exceptions:
      throws java.net.SocketException

  private void endWrite(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // boolean completed
         0: .line 377
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 378
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.NioSocketImpl.writerThread:J
         2: .line 379
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 3 /* state */
        start local 3 // int state
         3: .line 380
            iload 3 /* state */
            iconst_4
            if_icmpne 5
         4: .line 381
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
         5: .line 382
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 1 /* completed */
            ifne 7
            iload 3 /* state */
            iconst_4
            if_icmplt 7
         6: .line 383
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int state
         7: .line 377
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 385
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean completed
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lsun/nio/ch/NioSocketImpl;
            0   12     1  completed  Z
            3    7     3      state  I
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
           Name  Flags
      completed  

  private int tryWrite(java.io.FileDescriptor, byte[], int, int);
    descriptor: (Ljava/io/FileDescriptor;[BII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // byte[] b
        start local 3 // int off
        start local 4 // int len
         0: .line 394
            iload 4 /* len */
            invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
            astore 5 /* src */
        start local 5 // java.nio.ByteBuffer src
         1: .line 395
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 2
            aload 5 /* src */
            invokevirtual java.nio.ByteBuffer.position:()I
            ifeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 397
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            aload 5 /* src */
            aload 2 /* b */
            iload 3 /* off */
            iload 4 /* len */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         3: .line 398
            getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 1 /* fd */
            aload 5 /* src */
            checkcast sun.nio.ch.DirectBuffer
            invokeinterface sun.nio.ch.DirectBuffer.address:()J
            iload 4 /* len */
            invokevirtual sun.nio.ch.NativeDispatcher.write:(Ljava/io/FileDescriptor;JI)I
            istore 7
         4: .line 400
            aload 5 /* src */
            invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
         5: .line 398
            iload 7
            ireturn
         6: .line 399
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
         7: .line 400
            aload 5 /* src */
            invokestatic sun.nio.ch.Util.offerFirstTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
         8: .line 401
            aload 6
            athrow
        end local 5 // java.nio.ByteBuffer src
        end local 4 // int len
        end local 3 // int off
        end local 2 // byte[] b
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/NioSocketImpl;
            0    9     1    fd  Ljava/io/FileDescriptor;
            0    9     2     b  [B
            0    9     3   off  I
            0    9     4   len  I
            1    9     5   src  Ljava/nio/ByteBuffer;
      Exception table:
        from    to  target  type
           2     4       6  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      b     
      off   
      len   

  private int implWrite(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 410
            iconst_0
            istore 4 /* n */
        start local 4 // int n
         1: .line 411
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.beginWrite:()Ljava/io/FileDescriptor;
            astore 5 /* fd */
        start local 5 // java.io.FileDescriptor fd
         2: .line 413
            aload 0 /* this */
            aload 5 /* fd */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual sun.nio.ch.NioSocketImpl.tryWrite:(Ljava/io/FileDescriptor;[BII)I
            istore 4 /* n */
         3: .line 414
            goto 6
         4: .line 415
      StackMap locals: int java.io.FileDescriptor
      StackMap stack:
            aload 0 /* this */
            aload 5 /* fd */
            getstatic sun.nio.ch.Net.POLLOUT:S
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
         5: .line 416
            aload 0 /* this */
            aload 5 /* fd */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual sun.nio.ch.NioSocketImpl.tryWrite:(Ljava/io/FileDescriptor;[BII)I
            istore 4 /* n */
         6: .line 414
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            i2l
            invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
            ifeq 7
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 4
         7: .line 418
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            istore 8
         8: .line 422
            aload 0 /* this */
            iload 4 /* n */
            ifle 9
            iconst_1
            goto 10
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top top int
      StackMap stack: sun.nio.ch.NioSocketImpl
         9: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top top int
      StackMap stack: sun.nio.ch.NioSocketImpl int
        10: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
        11: .line 418
            iload 8
            ireturn
        12: .line 419
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor
      StackMap stack: java.io.IOException
            astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        13: .line 420
            new java.net.SocketException
            dup
            aload 6 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.io.IOException ioe
        14: .line 421
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        15: .line 422
            aload 0 /* this */
            iload 4 /* n */
            ifle 16
            iconst_1
            goto 17
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl
        16: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int int java.io.FileDescriptor top java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl int
        17: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
        18: .line 423
            aload 7
            athrow
        end local 5 // java.io.FileDescriptor fd
        end local 4 // int n
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lsun/nio/ch/NioSocketImpl;
            0   19     1     b  [B
            0   19     2   off  I
            0   19     3   len  I
            1   19     4     n  I
            2   19     5    fd  Ljava/io/FileDescriptor;
           13   14     6   ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     8      12  Class java.io.IOException
           2     8      14  any
          12    14      14  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  private void write(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 431
            iload 2 /* off */
            iload 3 /* len */
            aload 1 /* b */
            arraylength
            invokestatic java.util.Objects.checkFromIndexSize:(III)I
            pop
         1: .line 432
            iload 3 /* len */
            ifle 15
         2: .line 433
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         3: .line 435
            iload 2 /* off */
            istore 4 /* pos */
        start local 4 // int pos
         4: .line 436
            iload 2 /* off */
            iload 3 /* len */
            iadd
            istore 5 /* end */
        start local 5 // int end
         5: .line 437
            goto 9
         6: .line 439
      StackMap locals: int int
      StackMap stack:
            iload 5 /* end */
            iload 4 /* pos */
            isub
            ldc 131072
            invokestatic java.lang.Math.min:(II)I
            istore 6 /* size */
        start local 6 // int size
         7: .line 440
            aload 0 /* this */
            aload 1 /* b */
            iload 4 /* pos */
            iload 6 /* size */
            invokevirtual sun.nio.ch.NioSocketImpl.implWrite:([BII)I
            istore 7 /* n */
        start local 7 // int n
         8: .line 441
            iload 4 /* pos */
            iload 7 /* n */
            iadd
            istore 4 /* pos */
        end local 7 // int n
        end local 6 // int size
         9: .line 437
      StackMap locals:
      StackMap stack:
            iload 4 /* pos */
            iload 5 /* end */
            if_icmplt 6
        end local 5 // int end
        end local 4 // int pos
        10: .line 443
            goto 14
      StackMap locals: sun.nio.ch.NioSocketImpl byte[] int int
      StackMap stack: java.lang.Throwable
        11: astore 8
        12: .line 444
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        13: .line 445
            aload 8
            athrow
        14: .line 444
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        15: .line 447
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lsun/nio/ch/NioSocketImpl;
            0   16     1     b  [B
            0   16     2   off  I
            0   16     3   len  I
            4   10     4   pos  I
            5   10     5   end  I
            7    9     6  size  I
            8    9     7     n  I
      Exception table:
        from    to  target  type
           3    11      11  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  protected void create(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // boolean stream
         0: .line 455
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 456
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            ifeq 3
         2: .line 457
            new java.io.IOException
            dup
            ldc "Already created"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 458
      StackMap locals: java.lang.Object
      StackMap stack:
            iload 1 /* stream */
            ifne 5
         4: .line 459
            invokestatic sun.net.ResourceManager.beforeUdpCreate:()V
         5: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.server:Z
            ifeq 9
         6: .line 463
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 7
            iload 1 /* stream */
            ifne 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 464
      StackMap locals:
      StackMap stack:
            iconst_1
            invokestatic sun.nio.ch.Net.serverSocket:(Z)Ljava/io/FileDescriptor;
            astore 3 /* fd */
        start local 3 // java.io.FileDescriptor fd
         8: .line 465
            goto 15
        end local 3 // java.io.FileDescriptor fd
         9: .line 466
      StackMap locals:
      StackMap stack:
            iload 1 /* stream */
            invokestatic sun.nio.ch.Net.socket:(Z)Ljava/io/FileDescriptor;
            astore 3 /* fd */
        start local 3 // java.io.FileDescriptor fd
        10: .line 468
            goto 15
        end local 3 // java.io.FileDescriptor fd
      StackMap locals:
      StackMap stack: java.io.IOException
        11: astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
        12: .line 469
            iload 1 /* stream */
            ifne 14
        13: .line 470
            invokestatic sun.net.ResourceManager.afterUdpClose:()V
        14: .line 471
      StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object top java.io.IOException
      StackMap stack:
            aload 4 /* ioe */
            athrow
        end local 4 // java.io.IOException ioe
        start local 3 // java.io.FileDescriptor fd
        15: .line 473
      StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object java.io.FileDescriptor
      StackMap stack:
            aload 3 /* fd */
            iload 1 /* stream */
            invokestatic sun.nio.ch.NioSocketImpl.closerFor:(Ljava/io/FileDescriptor;Z)Ljava/lang/Runnable;
            astore 4 /* closer */
        start local 4 // java.lang.Runnable closer
        16: .line 474
            aload 0 /* this */
            aload 3 /* fd */
            putfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
        17: .line 475
            aload 0 /* this */
            iload 1 /* stream */
            putfield sun.nio.ch.NioSocketImpl.stream:Z
        18: .line 476
            aload 0 /* this */
            invokestatic jdk.internal.ref.CleanerFactory.cleaner:()Ljava/lang/ref/Cleaner;
            aload 0 /* this */
            aload 4 /* closer */
            invokevirtual java.lang.ref.Cleaner.register:(Ljava/lang/Object;Ljava/lang/Runnable;)Ljava/lang/ref/Cleaner$Cleanable;
            putfield sun.nio.ch.NioSocketImpl.cleaner:Ljava/lang/ref/Cleaner$Cleanable;
        19: .line 477
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.state:I
        end local 4 // java.lang.Runnable closer
        end local 3 // java.io.FileDescriptor fd
        20: .line 455
            aload 2
            monitorexit
        21: goto 24
      StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object
      StackMap stack: java.lang.Throwable
        22: aload 2
            monitorexit
        23: athrow
        24: .line 479
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean stream
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   25     0    this  Lsun/nio/ch/NioSocketImpl;
            0   25     1  stream  Z
            8    9     3      fd  Ljava/io/FileDescriptor;
           10   11     3      fd  Ljava/io/FileDescriptor;
           15   20     3      fd  Ljava/io/FileDescriptor;
           12   15     4     ioe  Ljava/io/IOException;
           16   20     4  closer  Ljava/lang/Runnable;
      Exception table:
        from    to  target  type
           5    10      11  Class java.io.IOException
           1    21      22  any
          22    23      22  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  private java.io.FileDescriptor beginConnect(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)Ljava/io/FileDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.InetAddress address
        start local 2 // int port
         0: .line 488
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 489
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 4 /* state */
        start local 4 // int state
         2: .line 490
            iload 4 /* state */
            iconst_1
            if_icmpeq 12
         3: .line 491
            iload 4 /* state */
            ifne 5
         4: .line 492
            new java.net.SocketException
            dup
            ldc "Not created"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 493
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 4 /* state */
            iconst_2
            if_icmpne 7
         6: .line 494
            new java.net.SocketException
            dup
            ldc "Connection in progress"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 495
      StackMap locals:
      StackMap stack:
            iload 4 /* state */
            iconst_3
            if_icmpne 9
         8: .line 496
            new java.net.SocketException
            dup
            ldc "Already connected"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 497
      StackMap locals:
      StackMap stack:
            iload 4 /* state */
            iconst_4
            if_icmplt 11
        10: .line 498
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 499
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 501
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.NioSocketImpl.state:I
        13: .line 504
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.localport:I
            ifne 15
        14: .line 505
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* address */
            iload 2 /* port */
            invokestatic sun.net.NetHooks.beforeTcpConnect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        15: .line 509
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* address */
            putfield sun.nio.ch.NioSocketImpl.address:Ljava/net/InetAddress;
        16: .line 510
            aload 0 /* this */
            iload 2 /* port */
            putfield sun.nio.ch.NioSocketImpl.port:I
        17: .line 512
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.NioSocketImpl.readerThread:J
        18: .line 513
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 3
            monitorexit
        19: areturn
        end local 4 // int state
        20: .line 488
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.InetAddress int java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        21: athrow
        end local 2 // int port
        end local 1 // java.net.InetAddress address
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lsun/nio/ch/NioSocketImpl;
            0   22     1  address  Ljava/net/InetAddress;
            0   22     2     port  I
            2   20     4    state  I
      Exception table:
        from    to  target  type
           1    19      20  any
          20    21      20  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      address  
      port     

  private void endConnect(java.io.FileDescriptor, boolean);
    descriptor: (Ljava/io/FileDescriptor;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // boolean completed
         0: .line 522
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 523
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.NioSocketImpl.readerThread:J
         2: .line 524
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 4 /* state */
        start local 4 // int state
         3: .line 525
            iload 4 /* state */
            iconst_4
            if_icmpne 5
         4: .line 526
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
         5: .line 527
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 2 /* completed */
            ifeq 9
            iload 4 /* state */
            iconst_2
            if_icmpne 9
         6: .line 528
            aload 0 /* this */
            iconst_3
            putfield sun.nio.ch.NioSocketImpl.state:I
         7: .line 529
            aload 0 /* this */
            aload 1 /* fd */
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield sun.nio.ch.NioSocketImpl.localport:I
         8: .line 530
            goto 11
      StackMap locals:
      StackMap stack:
         9: iload 2 /* completed */
            ifne 11
            iload 4 /* state */
            iconst_4
            if_icmplt 11
        10: .line 531
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // int state
        11: .line 522
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 3
            monitorexit
        14: athrow
        15: .line 534
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean completed
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Lsun/nio/ch/NioSocketImpl;
            0   16     1         fd  Ljava/io/FileDescriptor;
            0   16     2  completed  Z
            3   11     4      state  I
      Exception table:
        from    to  target  type
           1    12      13  any
          13    14      13  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      fd         
      completed  

  private boolean timedFinishConnect(java.io.FileDescriptor, long);
    descriptor: (Ljava/io/FileDescriptor;J)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // long nanos
         0: .line 541
            invokestatic java.lang.System.nanoTime:()J
            lstore 4 /* startNanos */
        start local 4 // long startNanos
         1: .line 542
            aload 1 /* fd */
            invokestatic sun.nio.ch.Net.pollConnectNow:(Ljava/io/FileDescriptor;)Z
            istore 6 /* polled */
        start local 6 // boolean polled
         2: .line 543
            goto 8
         3: .line 544
      StackMap locals: long int
      StackMap stack:
            lload 2 /* nanos */
            invokestatic java.lang.System.nanoTime:()J
            lload 4 /* startNanos */
            lsub
            lsub
            lstore 7 /* remainingNanos */
        start local 7 // long remainingNanos
         4: .line 545
            lload 7 /* remainingNanos */
            lconst_0
            lcmp
            ifgt 6
         5: .line 546
            new java.net.SocketTimeoutException
            dup
            ldc "Connect timed out"
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 548
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* fd */
            getstatic sun.nio.ch.Net.POLLOUT:S
            lload 7 /* remainingNanos */
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
         7: .line 549
            aload 1 /* fd */
            invokestatic sun.nio.ch.Net.pollConnectNow:(Ljava/io/FileDescriptor;)Z
            istore 6 /* polled */
        end local 7 // long remainingNanos
         8: .line 543
      StackMap locals:
      StackMap stack:
            iload 6 /* polled */
            ifne 9
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 3
         9: .line 551
      StackMap locals:
      StackMap stack:
            iload 6 /* polled */
            ifeq 10
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifeq 10
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_0
            ireturn
        end local 6 // boolean polled
        end local 4 // long startNanos
        end local 2 // long nanos
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lsun/nio/ch/NioSocketImpl;
            0   11     1              fd  Ljava/io/FileDescriptor;
            0   11     2           nanos  J
            1   11     4      startNanos  J
            2   11     6          polled  Z
            4    8     7  remainingNanos  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      nanos  

  protected void connect(java.net.SocketAddress, int);
    descriptor: (Ljava/net/SocketAddress;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=14, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.SocketAddress remote
        start local 2 // int millis
         0: .line 563
            aload 1 /* remote */
            instanceof java.net.InetSocketAddress
            ifne 2
         1: .line 564
            new java.io.IOException
            dup
            ldc "Unsupported address type"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 565
      StackMap locals:
      StackMap stack:
            aload 1 /* remote */
            checkcast java.net.InetSocketAddress
            astore 3 /* isa */
        start local 3 // java.net.InetSocketAddress isa
         3: .line 566
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 5
         4: .line 567
            new java.net.UnknownHostException
            dup
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
            invokespecial java.net.UnknownHostException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 570
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            astore 4 /* address */
        start local 4 // java.net.InetAddress address
         6: .line 571
            aload 4 /* address */
            invokevirtual java.net.InetAddress.isAnyLocalAddress:()Z
            ifeq 8
         7: .line 572
            invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
            astore 4 /* address */
         8: .line 573
      StackMap locals: java.net.InetAddress
      StackMap stack:
            aload 3 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            istore 5 /* port */
        start local 5 // int port
         9: .line 575
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            astore 6 /* connectLock */
        start local 6 // java.util.concurrent.locks.ReentrantLock connectLock
        10: .line 577
            aload 6 /* connectLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
        11: .line 579
            iconst_0
            istore 7 /* connected */
        start local 7 // boolean connected
        12: .line 580
            aload 0 /* this */
            aload 4 /* address */
            iload 5 /* port */
            invokevirtual sun.nio.ch.NioSocketImpl.beginConnect:(Ljava/net/InetAddress;I)Ljava/io/FileDescriptor;
            astore 8 /* fd */
        start local 8 // java.io.FileDescriptor fd
        13: .line 584
            iload 2 /* millis */
            ifle 15
        14: .line 585
            aload 0 /* this */
            aload 8 /* fd */
            invokevirtual sun.nio.ch.NioSocketImpl.configureNonBlocking:(Ljava/io/FileDescriptor;)V
        15: .line 588
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketAddress int java.net.InetSocketAddress java.net.InetAddress int java.util.concurrent.locks.ReentrantLock int java.io.FileDescriptor
      StackMap stack:
            aload 8 /* fd */
            aload 4 /* address */
            iload 5 /* port */
            invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
            istore 9 /* n */
        start local 9 // int n
        16: .line 589
            iload 9 /* n */
            ifle 19
        17: .line 591
            iconst_1
            istore 7 /* connected */
        18: .line 592
            goto 32
        19: .line 593
      StackMap locals: int
      StackMap stack:
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 20
            iload 9 /* n */
            i2l
            invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
            ifne 20
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        20: .line 594
      StackMap locals:
      StackMap stack:
            iload 2 /* millis */
            ifle 24
        21: .line 596
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            iload 2 /* millis */
            i2l
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lstore 10 /* nanos */
        start local 10 // long nanos
        22: .line 597
            aload 0 /* this */
            aload 8 /* fd */
            lload 10 /* nanos */
            invokevirtual sun.nio.ch.NioSocketImpl.timedFinishConnect:(Ljava/io/FileDescriptor;J)Z
            istore 7 /* connected */
        end local 10 // long nanos
        23: .line 598
            goto 32
        24: .line 600
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 10 /* polled */
        start local 10 // boolean polled
        25: .line 601
            goto 28
        26: .line 602
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 8 /* fd */
            getstatic sun.nio.ch.Net.POLLOUT:S
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
        27: .line 603
            aload 8 /* fd */
            invokestatic sun.nio.ch.Net.pollConnectNow:(Ljava/io/FileDescriptor;)Z
            istore 10 /* polled */
        28: .line 601
      StackMap locals:
      StackMap stack:
            iload 10 /* polled */
            ifne 29
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 26
        29: .line 605
      StackMap locals:
      StackMap stack:
            iload 10 /* polled */
            ifeq 30
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifeq 30
            iconst_1
            goto 31
      StackMap locals:
      StackMap stack:
        30: iconst_0
      StackMap locals:
      StackMap stack: int
        31: istore 7 /* connected */
        end local 10 // boolean polled
        32: .line 610
      StackMap locals:
      StackMap stack:
            iload 7 /* connected */
            ifeq 38
            iload 2 /* millis */
            ifle 38
        33: .line 611
            aload 0 /* this */
            aload 8 /* fd */
            invokevirtual sun.nio.ch.NioSocketImpl.configureBlocking:(Ljava/io/FileDescriptor;)V
        end local 9 // int n
        34: .line 614
            goto 38
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketAddress int java.net.InetSocketAddress java.net.InetAddress int java.util.concurrent.locks.ReentrantLock int java.io.FileDescriptor
      StackMap stack: java.lang.Throwable
        35: astore 12
        36: .line 615
            aload 0 /* this */
            aload 8 /* fd */
            iload 7 /* connected */
            invokevirtual sun.nio.ch.NioSocketImpl.endConnect:(Ljava/io/FileDescriptor;Z)V
        37: .line 616
            aload 12
            athrow
        38: .line 615
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* fd */
            iload 7 /* connected */
            invokevirtual sun.nio.ch.NioSocketImpl.endConnect:(Ljava/io/FileDescriptor;Z)V
        end local 8 // java.io.FileDescriptor fd
        end local 7 // boolean connected
        39: .line 617
            goto 43
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketAddress int java.net.InetSocketAddress java.net.InetAddress int java.util.concurrent.locks.ReentrantLock
      StackMap stack: java.lang.Throwable
        40: astore 13
        41: .line 618
            aload 6 /* connectLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        42: .line 619
            aload 13
            athrow
        43: .line 618
      StackMap locals:
      StackMap stack:
            aload 6 /* connectLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        44: .line 620
            goto 48
      StackMap locals:
      StackMap stack: java.io.IOException
        45: astore 7 /* ioe */
        start local 7 // java.io.IOException ioe
        46: .line 621
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.close:()V
        47: .line 622
            aload 7 /* ioe */
            aload 3 /* isa */
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            athrow
        end local 7 // java.io.IOException ioe
        48: .line 624
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.util.concurrent.locks.ReentrantLock connectLock
        end local 5 // int port
        end local 4 // java.net.InetAddress address
        end local 3 // java.net.InetSocketAddress isa
        end local 2 // int millis
        end local 1 // java.net.SocketAddress remote
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   49     0         this  Lsun/nio/ch/NioSocketImpl;
            0   49     1       remote  Ljava/net/SocketAddress;
            0   49     2       millis  I
            3   49     3          isa  Ljava/net/InetSocketAddress;
            6   49     4      address  Ljava/net/InetAddress;
            9   49     5         port  I
           10   49     6  connectLock  Ljava/util/concurrent/locks/ReentrantLock;
           12   39     7    connected  Z
           13   39     8           fd  Ljava/io/FileDescriptor;
           16   34     9            n  I
           22   23    10        nanos  J
           25   32    10       polled  Z
           46   48     7          ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          13    35      35  any
          11    40      40  any
          10    44      45  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      remote  
      millis  

  protected void connect(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.lang.String host
        start local 2 // int port
         0: .line 628
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            aload 1 /* host */
            iload 2 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            iconst_0
            invokevirtual sun.nio.ch.NioSocketImpl.connect:(Ljava/net/SocketAddress;I)V
         1: .line 629
            return
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/nio/ch/NioSocketImpl;
            0    2     1  host  Ljava/lang/String;
            0    2     2  port  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      host  
      port  

  protected void connect(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.InetAddress address
        start local 2 // int port
         0: .line 633
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            aload 1 /* address */
            iload 2 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
            iconst_0
            invokevirtual sun.nio.ch.NioSocketImpl.connect:(Ljava/net/SocketAddress;I)V
         1: .line 634
            return
        end local 2 // int port
        end local 1 // java.net.InetAddress address
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lsun/nio/ch/NioSocketImpl;
            0    2     1  address  Ljava/net/InetAddress;
            0    2     2     port  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      address  
      port     

  protected void bind(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.InetAddress host
        start local 2 // int port
         0: .line 638
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 639
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         2: .line 640
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.localport:I
            ifeq 4
         3: .line 641
            new java.net.SocketException
            dup
            ldc "Already bound"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 642
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* host */
            iload 2 /* port */
            invokestatic sun.net.NetHooks.beforeTcpBind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
         5: .line 643
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* host */
            iload 2 /* port */
            invokestatic sun.nio.ch.Net.bind:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
         6: .line 647
            aload 0 /* this */
            aload 1 /* host */
            putfield sun.nio.ch.NioSocketImpl.address:Ljava/net/InetAddress;
         7: .line 648
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield sun.nio.ch.NioSocketImpl.localport:I
         8: .line 638
            aload 3
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 3
            monitorexit
        11: athrow
        12: .line 650
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int port
        end local 1 // java.net.InetAddress host
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/nio/ch/NioSocketImpl;
            0   13     1  host  Ljava/net/InetAddress;
            0   13     2  port  I
      Exception table:
        from    to  target  type
           1     9      10  any
          10    11      10  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      host  
      port  

  protected void listen(int);
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // int backlog
         0: .line 654
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 655
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         2: .line 656
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.localport:I
            ifne 4
         3: .line 657
            new java.net.SocketException
            dup
            ldc "Not bound"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 658
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            iload 1 /* backlog */
            iconst_1
            if_icmpge 5
            bipush 50
            goto 6
      StackMap locals:
      StackMap stack: java.io.FileDescriptor
         5: iload 1 /* backlog */
      StackMap locals: sun.nio.ch.NioSocketImpl int java.lang.Object
      StackMap stack: java.io.FileDescriptor int
         6: invokestatic sun.nio.ch.Net.listen:(Ljava/io/FileDescriptor;I)V
         7: .line 654
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 660
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int backlog
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lsun/nio/ch/NioSocketImpl;
            0   12     1  backlog  I
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      backlog  

  private java.io.FileDescriptor beginAccept();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 667
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 668
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         2: .line 669
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stream:Z
            ifne 4
         3: .line 670
            new java.net.SocketException
            dup
            ldc "Not a stream socket"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 671
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.localport:I
            ifne 6
         5: .line 672
            new java.net.SocketException
            dup
            ldc "Not bound"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 673
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic sun.nio.ch.NativeThread.current:()J
            putfield sun.nio.ch.NioSocketImpl.readerThread:J
         7: .line 674
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1
            monitorexit
         8: areturn
         9: .line 667
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        10: athrow
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.net.SocketException

  private void endAccept(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // boolean completed
         0: .line 683
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 684
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 3 /* state */
        start local 3 // int state
         2: .line 685
            aload 0 /* this */
            lconst_0
            putfield sun.nio.ch.NioSocketImpl.readerThread:J
         3: .line 686
            iload 3 /* state */
            iconst_4
            if_icmpne 5
         4: .line 687
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.tryFinishClose:()V
         5: .line 688
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 1 /* completed */
            ifne 7
            iload 3 /* state */
            iconst_4
            if_icmplt 7
         6: .line 689
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int state
         7: .line 683
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 691
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean completed
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0       this  Lsun/nio/ch/NioSocketImpl;
            0   12     1  completed  Z
            2    7     3      state  I
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
           Name  Flags
      completed  

  private int timedAccept(java.io.FileDescriptor, java.io.FileDescriptor, java.net.InetSocketAddress[], long);
    descriptor: (Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;J)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=5
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // java.io.FileDescriptor newfd
        start local 3 // java.net.InetSocketAddress[] isaa
        start local 4 // long nanos
         0: .line 703
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* startNanos */
        start local 6 // long startNanos
         1: .line 704
            aload 1 /* fd */
            aload 2 /* newfd */
            aload 3 /* isaa */
            invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
            istore 8 /* n */
        start local 8 // int n
         2: .line 705
            goto 8
         3: .line 706
      StackMap locals: long int
      StackMap stack:
            lload 4 /* nanos */
            invokestatic java.lang.System.nanoTime:()J
            lload 6 /* startNanos */
            lsub
            lsub
            lstore 9 /* remainingNanos */
        start local 9 // long remainingNanos
         4: .line 707
            lload 9 /* remainingNanos */
            lconst_0
            lcmp
            ifgt 6
         5: .line 708
            new java.net.SocketTimeoutException
            dup
            ldc "Accept timed out"
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 710
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* fd */
            getstatic sun.nio.ch.Net.POLLIN:S
            lload 9 /* remainingNanos */
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;IJ)V
         7: .line 711
            aload 1 /* fd */
            aload 2 /* newfd */
            aload 3 /* isaa */
            invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
            istore 8 /* n */
        end local 9 // long remainingNanos
         8: .line 705
      StackMap locals:
      StackMap stack:
            iload 8 /* n */
            bipush -2
            if_icmpne 9
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 3
         9: .line 713
      StackMap locals:
      StackMap stack:
            iload 8 /* n */
            ireturn
        end local 8 // int n
        end local 6 // long startNanos
        end local 4 // long nanos
        end local 3 // java.net.InetSocketAddress[] isaa
        end local 2 // java.io.FileDescriptor newfd
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0            this  Lsun/nio/ch/NioSocketImpl;
            0   10     1              fd  Ljava/io/FileDescriptor;
            0   10     2           newfd  Ljava/io/FileDescriptor;
            0   10     3            isaa  [Ljava/net/InetSocketAddress;
            0   10     4           nanos  J
            1   10     6      startNanos  J
            2   10     8               n  I
            4    8     9  remainingNanos  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      newfd  
      isaa   
      nanos  

  protected void accept(java.net.SocketImpl);
    descriptor: (Ljava/net/SocketImpl;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=13, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.SocketImpl si
         0: .line 722
            aload 1 /* si */
            checkcast sun.nio.ch.NioSocketImpl
            astore 2 /* nsi */
        start local 2 // sun.nio.ch.NioSocketImpl nsi
         1: .line 723
            aload 2 /* nsi */
            getfield sun.nio.ch.NioSocketImpl.state:I
            ifeq 3
         2: .line 724
            new java.net.SocketException
            dup
            ldc "Not a newly created SocketImpl"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 726
      StackMap locals: sun.nio.ch.NioSocketImpl
      StackMap stack:
            new java.io.FileDescriptor
            dup
            invokespecial java.io.FileDescriptor.<init>:()V
            astore 3 /* newfd */
        start local 3 // java.io.FileDescriptor newfd
         4: .line 727
            iconst_1
            anewarray java.net.InetSocketAddress
            astore 4 /* isaa */
        start local 4 // java.net.InetSocketAddress[] isaa
         5: .line 731
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readLock:Ljava/util/concurrent/locks/ReentrantLock;
            astore 5 /* acceptLock */
        start local 5 // java.util.concurrent.locks.ReentrantLock acceptLock
         6: .line 732
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.timeout:I
            istore 6 /* timeout */
        start local 6 // int timeout
         7: .line 733
            lconst_0
            lstore 7 /* remainingNanos */
        start local 7 // long remainingNanos
         8: .line 734
            iload 6 /* timeout */
            ifle 13
         9: .line 735
            aload 5 /* acceptLock */
            iload 6 /* timeout */
            i2l
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic sun.nio.ch.NioSocketImpl.tryLock:(Ljava/util/concurrent/locks/ReentrantLock;JLjava/util/concurrent/TimeUnit;)J
            lstore 7 /* remainingNanos */
        10: .line 736
            lload 7 /* remainingNanos */
            lconst_0
            lcmp
            ifgt 14
        11: .line 737
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 12
            aload 5 /* acceptLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.isHeldByCurrentThread:()Z
            ifeq 12
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 738
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long
      StackMap stack:
            new java.net.SocketTimeoutException
            dup
            ldc "Accept timed out"
            invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 741
      StackMap locals:
      StackMap stack:
            aload 5 /* acceptLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
        14: .line 746
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* n */
        start local 9 // int n
        15: .line 747
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.beginAccept:()Ljava/io/FileDescriptor;
            astore 10 /* fd */
        start local 10 // java.io.FileDescriptor fd
        16: .line 749
            lload 7 /* remainingNanos */
            lconst_0
            lcmp
            ifle 20
        17: .line 751
            aload 0 /* this */
            aload 10 /* fd */
            invokevirtual sun.nio.ch.NioSocketImpl.configureNonBlocking:(Ljava/io/FileDescriptor;)V
        18: .line 752
            aload 0 /* this */
            aload 10 /* fd */
            aload 3 /* newfd */
            aload 4 /* isaa */
            lload 7 /* remainingNanos */
            invokevirtual sun.nio.ch.NioSocketImpl.timedAccept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;J)I
            istore 9 /* n */
        19: .line 753
            goto 32
        20: .line 755
      StackMap locals: int java.io.FileDescriptor
      StackMap stack:
            aload 10 /* fd */
            aload 3 /* newfd */
            aload 4 /* isaa */
            invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
            istore 9 /* n */
        21: .line 756
            goto 24
        22: .line 757
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* fd */
            getstatic sun.nio.ch.Net.POLLIN:S
            invokevirtual sun.nio.ch.NioSocketImpl.park:(Ljava/io/FileDescriptor;I)V
        23: .line 758
            aload 10 /* fd */
            aload 3 /* newfd */
            aload 4 /* isaa */
            invokestatic sun.nio.ch.Net.accept:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/net/InetSocketAddress;)I
            istore 9 /* n */
        24: .line 756
      StackMap locals:
      StackMap stack:
            iload 9 /* n */
            i2l
            invokestatic sun.nio.ch.IOStatus.okayToRetry:(J)Z
            ifeq 32
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 22
        25: .line 761
            goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: astore 11
        27: .line 762
            aload 0 /* this */
            iload 9 /* n */
            ifle 28
            iconst_1
            goto 29
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long int java.io.FileDescriptor java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl
        28: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long int java.io.FileDescriptor java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl int
        29: invokevirtual sun.nio.ch.NioSocketImpl.endAccept:(Z)V
        30: .line 763
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 31
            iload 9 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 31
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        31: .line 764
      StackMap locals:
      StackMap stack:
            aload 11
            athrow
        32: .line 762
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 9 /* n */
            ifle 33
            iconst_1
            goto 34
      StackMap locals:
      StackMap stack: sun.nio.ch.NioSocketImpl
        33: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long int java.io.FileDescriptor
      StackMap stack: sun.nio.ch.NioSocketImpl int
        34: invokevirtual sun.nio.ch.NioSocketImpl.endAccept:(Z)V
        35: .line 763
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 39
            iload 9 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 39
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 10 // java.io.FileDescriptor fd
        end local 9 // int n
        36: .line 765
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long
      StackMap stack: java.lang.Throwable
            astore 12
        37: .line 766
            aload 5 /* acceptLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        38: .line 767
            aload 12
            athrow
        39: .line 766
      StackMap locals:
      StackMap stack:
            aload 5 /* acceptLock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        40: .line 772
            aload 3 /* newfd */
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            astore 9 /* localAddress */
        start local 9 // java.net.InetSocketAddress localAddress
        41: .line 773
            aload 3 /* newfd */
            iconst_1
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
        42: .line 774
            goto 46
        end local 9 // java.net.InetSocketAddress localAddress
      StackMap locals:
      StackMap stack: java.io.IOException
        43: astore 10 /* ioe */
        start local 10 // java.io.IOException ioe
        44: .line 775
            getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 3 /* newfd */
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
        45: .line 776
            aload 10 /* ioe */
            athrow
        end local 10 // java.io.IOException ioe
        start local 9 // java.net.InetSocketAddress localAddress
        46: .line 780
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 3 /* newfd */
            iconst_1
            invokestatic sun.nio.ch.NioSocketImpl.closerFor:(Ljava/io/FileDescriptor;Z)Ljava/lang/Runnable;
            astore 10 /* closer */
        start local 10 // java.lang.Runnable closer
        47: .line 781
            aload 2 /* nsi */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 11
            monitorenter
        48: .line 782
            aload 2 /* nsi */
            aload 3 /* newfd */
            putfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
        49: .line 783
            aload 2 /* nsi */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.stream:Z
        50: .line 784
            aload 2 /* nsi */
            invokestatic jdk.internal.ref.CleanerFactory.cleaner:()Ljava/lang/ref/Cleaner;
            aload 2 /* nsi */
            aload 10 /* closer */
            invokevirtual java.lang.ref.Cleaner.register:(Ljava/lang/Object;Ljava/lang/Runnable;)Ljava/lang/ref/Cleaner$Cleanable;
            putfield sun.nio.ch.NioSocketImpl.cleaner:Ljava/lang/ref/Cleaner$Cleanable;
        51: .line 785
            aload 2 /* nsi */
            aload 9 /* localAddress */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield sun.nio.ch.NioSocketImpl.localport:I
        52: .line 786
            aload 2 /* nsi */
            aload 4 /* isaa */
            iconst_0
            aaload
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            putfield sun.nio.ch.NioSocketImpl.address:Ljava/net/InetAddress;
        53: .line 787
            aload 2 /* nsi */
            aload 4 /* isaa */
            iconst_0
            aaload
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield sun.nio.ch.NioSocketImpl.port:I
        54: .line 788
            aload 2 /* nsi */
            iconst_3
            putfield sun.nio.ch.NioSocketImpl.state:I
        55: .line 781
            aload 11
            monitorexit
        56: goto 59
      StackMap locals: sun.nio.ch.NioSocketImpl java.net.SocketImpl sun.nio.ch.NioSocketImpl java.io.FileDescriptor java.net.InetSocketAddress[] java.util.concurrent.locks.ReentrantLock int long java.net.InetSocketAddress java.lang.Runnable java.lang.Object
      StackMap stack: java.lang.Throwable
        57: aload 11
            monitorexit
        58: athrow
        59: .line 790
      StackMap locals:
      StackMap stack:
            return
        end local 10 // java.lang.Runnable closer
        end local 9 // java.net.InetSocketAddress localAddress
        end local 7 // long remainingNanos
        end local 6 // int timeout
        end local 5 // java.util.concurrent.locks.ReentrantLock acceptLock
        end local 4 // java.net.InetSocketAddress[] isaa
        end local 3 // java.io.FileDescriptor newfd
        end local 2 // sun.nio.ch.NioSocketImpl nsi
        end local 1 // java.net.SocketImpl si
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   60     0            this  Lsun/nio/ch/NioSocketImpl;
            0   60     1              si  Ljava/net/SocketImpl;
            1   60     2             nsi  Lsun/nio/ch/NioSocketImpl;
            4   60     3           newfd  Ljava/io/FileDescriptor;
            5   60     4            isaa  [Ljava/net/InetSocketAddress;
            6   60     5      acceptLock  Ljava/util/concurrent/locks/ReentrantLock;
            7   60     6         timeout  I
            8   60     7  remainingNanos  J
           15   36     9               n  I
           16   36    10              fd  Ljava/io/FileDescriptor;
           41   43     9    localAddress  Ljava/net/InetSocketAddress;
           46   60     9    localAddress  Ljava/net/InetSocketAddress;
           44   46    10             ioe  Ljava/io/IOException;
           47   60    10          closer  Ljava/lang/Runnable;
      Exception table:
        from    to  target  type
          16    26      26  any
          14    36      36  any
          40    42      43  Class java.io.IOException
          48    56      57  any
          57    58      57  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      si    

  protected java.io.InputStream getInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 794
            new sun.nio.ch.NioSocketImpl$1
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.NioSocketImpl$1.<init>:(Lsun/nio/ch/NioSocketImpl;)V
            areturn
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/NioSocketImpl;

  protected java.io.OutputStream getOutputStream();
    descriptor: ()Ljava/io/OutputStream;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 818
            new sun.nio.ch.NioSocketImpl$2
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.NioSocketImpl$2.<init>:(Lsun/nio/ch/NioSocketImpl;)V
            areturn
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/NioSocketImpl;

  protected int available();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 837
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 838
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
         2: .line 839
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
            ifeq 5
         3: .line 840
            aload 1
            monitorexit
         4: iconst_0
            ireturn
         5: .line 842
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.available:(Ljava/io/FileDescriptor;)I
            aload 1
            monitorexit
         6: ireturn
         7: .line 837
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         8: athrow
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           1     4       7  any
           5     6       7  any
           7     8       7  any
    Exceptions:
      throws java.io.IOException

  private boolean tryClose();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 851
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifeq 1
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            iconst_4
            if_icmpeq 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 852
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readerThread:J
            lconst_0
            lcmp
            ifne 12
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writerThread:J
            lconst_0
            lcmp
            ifne 12
         3: .line 854
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.cleaner:Ljava/lang/ref/Cleaner$Cleanable;
            invokeinterface java.lang.ref.Cleaner$Cleanable.clean:()V
         4: .line 855
            goto 10
      StackMap locals:
      StackMap stack: java.io.UncheckedIOException
         5: astore 1 /* ioe */
        start local 1 // java.io.UncheckedIOException ioe
         6: .line 856
            aload 1 /* ioe */
            invokevirtual java.io.UncheckedIOException.getCause:()Ljava/io/IOException;
            athrow
        end local 1 // java.io.UncheckedIOException ioe
         7: .line 857
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
         8: .line 858
            aload 0 /* this */
            iconst_5
            putfield sun.nio.ch.NioSocketImpl.state:I
         9: .line 859
            aload 2
            athrow
        10: .line 858
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_5
            putfield sun.nio.ch.NioSocketImpl.state:I
        11: .line 860
            iconst_1
            ireturn
        12: .line 862
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/nio/ch/NioSocketImpl;
            6    7     1   ioe  Ljava/io/UncheckedIOException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.io.UncheckedIOException
           3     7       7  any
    Exceptions:
      throws java.io.IOException

  private void tryFinishClose();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 873
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.tryClose:()Z
            pop
         1: .line 874
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 875
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException

  protected void close();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 884
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 885
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.state:I
            istore 2 /* state */
        start local 2 // int state
         2: .line 886
            iload 2 /* state */
            iconst_4
            if_icmplt 5
         3: .line 887
            aload 1
            monitorexit
         4: return
         5: .line 888
      StackMap locals: java.lang.Object int
      StackMap stack:
            iload 2 /* state */
            ifne 9
         6: .line 890
            aload 0 /* this */
            iconst_5
            putfield sun.nio.ch.NioSocketImpl.state:I
         7: .line 891
            aload 1
            monitorexit
         8: return
         9: .line 893
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_4
            putfield sun.nio.ch.NioSocketImpl.state:I
        10: .line 897
            getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
            astore 3 /* SO_LINGER */
        start local 3 // java.net.SocketOption SO_LINGER
        11: .line 898
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 3 /* SO_LINGER */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ifeq 15
        12: .line 899
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
            invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
        end local 3 // java.net.SocketOption SO_LINGER
        13: .line 901
            goto 15
      StackMap locals:
      StackMap stack: java.io.IOException
        14: pop
        15: .line 906
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.tryClose:()Z
            ifne 23
        16: .line 907
            getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.preClose:(Ljava/io/FileDescriptor;)V
        17: .line 908
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.readerThread:J
            lstore 3 /* reader */
        start local 3 // long reader
        18: .line 909
            lload 3 /* reader */
            lconst_0
            lcmp
            ifeq 20
        19: .line 910
            lload 3 /* reader */
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
        20: .line 911
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writerThread:J
            lstore 5 /* writer */
        start local 5 // long writer
        21: .line 912
            lload 5 /* writer */
            lconst_0
            lcmp
            ifeq 23
        22: .line 913
            lload 5 /* writer */
            invokestatic sun.nio.ch.NativeThread.signal:(J)V
        end local 5 // long writer
        end local 3 // long reader
        end local 2 // int state
        23: .line 884
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        24: goto 27
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: aload 1
            monitorexit
        26: athrow
        27: .line 916
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0       this  Lsun/nio/ch/NioSocketImpl;
            2   23     2      state  I
           11   13     3  SO_LINGER  Ljava/net/SocketOption<Ljava/lang/Integer;>;
           18   23     3     reader  J
           21   23     5     writer  J
      Exception table:
        from    to  target  type
          10    13      14  Class java.io.IOException
           1     4      25  any
           5     8      25  any
           9    24      25  any
          25    26      25  any
    Exceptions:
      throws java.io.IOException

  protected java.util.Set<java.net.SocketOption<?>> supportedOptions();
    descriptor: ()Ljava/util/Set;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 924
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.server:Z
            ifeq 1
            getstatic sun.nio.ch.NioSocketImpl.serverSocketOptions:Ljava/util/Set;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic sun.nio.ch.NioSocketImpl.clientSocketOptions:Ljava/util/Set;
      StackMap locals:
      StackMap stack: java.util.Set
         2: astore 1 /* options */
        start local 1 // java.util.Set options
         3: .line 925
            aload 1 /* options */
            ifnonnull 24
         4: .line 926
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* options */
         5: .line 927
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 928
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 929
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.server:Z
            ifeq 11
         8: .line 931
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         9: .line 932
            aload 1 /* options */
            invokestatic sun.net.ext.ExtendedSocketOptions.serverSocketOptions:()Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        10: .line 933
            goto 17
        11: .line 934
      StackMap locals: java.util.Set
      StackMap stack:
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        12: .line 935
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        13: .line 936
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        14: .line 937
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        15: .line 938
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        16: .line 939
            aload 1 /* options */
            invokestatic sun.net.ext.ExtendedSocketOptions.clientSocketOptions:()Ljava/util/Set;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        17: .line 941
      StackMap locals:
      StackMap stack:
            invokestatic sun.nio.ch.Net.isReusePortAvailable:()Z
            ifeq 19
        18: .line 942
            aload 1 /* options */
            getstatic java.net.StandardSocketOptions.SO_REUSEPORT:Ljava/net/SocketOption;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        19: .line 943
      StackMap locals:
      StackMap stack:
            aload 1 /* options */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            astore 1 /* options */
        20: .line 944
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.server:Z
            ifeq 23
        21: .line 945
            aload 1 /* options */
            putstatic sun.nio.ch.NioSocketImpl.serverSocketOptions:Ljava/util/Set;
        22: .line 946
            goto 24
        23: .line 947
      StackMap locals:
      StackMap stack:
            aload 1 /* options */
            putstatic sun.nio.ch.NioSocketImpl.clientSocketOptions:Ljava/util/Set;
        24: .line 950
      StackMap locals:
      StackMap stack:
            aload 1 /* options */
            areturn
        end local 1 // java.util.Set options
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   25     0     this  Lsun/nio/ch/NioSocketImpl;
            3   25     1  options  Ljava/util/Set<Ljava/net/SocketOption<*>;>;
    Signature: ()Ljava/util/Set<Ljava/net/SocketOption<*>;>;

  protected <T> void setOption(java.net.SocketOption<T>, );
    descriptor: (Ljava/net/SocketOption;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.SocketOption opt
        start local 2 // java.lang.Object value
         0: .line 955
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.supportedOptions:()Ljava/util/Set;
            aload 1 /* opt */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 956
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "'"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* opt */
            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
         2: .line 957
      StackMap locals:
      StackMap stack:
            aload 1 /* opt */
            invokeinterface java.net.SocketOption.type:()Ljava/lang/Class;
            aload 2 /* value */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 958
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid value '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 959
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         5: .line 960
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         6: .line 961
            aload 1 /* opt */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            if_acmpne 9
         7: .line 963
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
            aload 1 /* opt */
            aload 2 /* value */
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
         8: .line 964
            goto 17
      StackMap locals: java.lang.Object
      StackMap stack:
         9: aload 1 /* opt */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            if_acmpne 16
        10: .line 965
            aload 2 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 4 /* b */
        start local 4 // boolean b
        11: .line 966
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 14
        12: .line 967
            aload 0 /* this */
            iload 4 /* b */
            putfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
        13: .line 968
            goto 17
        14: .line 969
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* opt */
            iload 4 /* b */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        end local 4 // boolean b
        15: .line 971
            goto 17
        16: .line 973
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* opt */
            aload 2 /* value */
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        17: .line 959
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        18: goto 21
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: aload 3
            monitorexit
        20: athrow
        21: .line 976
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object value
        end local 1 // java.net.SocketOption opt
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   22     0   this  Lsun/nio/ch/NioSocketImpl;
            0   22     1    opt  Ljava/net/SocketOption<TT;>;
            0   22     2  value  TT;
           11   15     4      b  Z
      Exception table:
        from    to  target  type
           5    18      19  any
          19    20      19  any
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/net/SocketOption<TT;>;TT;)V
    MethodParameters:
       Name  Flags
      opt    
      value  

  protected <T> T getOption(java.net.SocketOption<T>);
    descriptor: (Ljava/net/SocketOption;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.net.SocketOption opt
         0: .line 980
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.supportedOptions:()Ljava/util/Set;
            aload 1 /* opt */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 981
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "'"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* opt */
            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
         2: .line 982
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 983
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         4: .line 984
            aload 1 /* opt */
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            if_acmpne 7
         5: .line 985
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
            aload 1 /* opt */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
            aload 2
            monitorexit
         6: areturn
         7: .line 986
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1 /* opt */
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            if_acmpne 13
         8: .line 987
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 11
         9: .line 988
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 2
            monitorexit
        10: areturn
        11: .line 990
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* opt */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
            aload 2
            monitorexit
        12: areturn
        13: .line 994
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* opt */
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
            aload 2
            monitorexit
        14: areturn
        15: .line 982
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        16: athrow
        end local 1 // java.net.SocketOption opt
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lsun/nio/ch/NioSocketImpl;
            0   17     1   opt  Ljava/net/SocketOption<TT;>;
      Exception table:
        from    to  target  type
           3     6      15  any
           7    10      15  any
          11    12      15  any
          13    14      15  any
          15    16      15  any
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Ljava/net/SocketOption<TT;>;)TT;
    MethodParameters:
      Name  Flags
      opt   

  private boolean booleanValue(java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.lang.Object value
        start local 2 // java.lang.String desc
         0: .line 1000
            aload 1 /* value */
            instanceof java.lang.Boolean
            ifne 2
         1: .line 1001
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Bad value for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* desc */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1002
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 2 // java.lang.String desc
        end local 1 // java.lang.Object value
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lsun/nio/ch/NioSocketImpl;
            0    3     1  value  Ljava/lang/Object;
            0    3     2   desc  Ljava/lang/String;
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
       Name  Flags
      value  
      desc   

  private int intValue(java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // java.lang.Object value
        start local 2 // java.lang.String desc
         0: .line 1006
            aload 1 /* value */
            instanceof java.lang.Integer
            ifne 2
         1: .line 1007
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Bad value for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* desc */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1008
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
        end local 2 // java.lang.String desc
        end local 1 // java.lang.Object value
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lsun/nio/ch/NioSocketImpl;
            0    3     1  value  Ljava/lang/Object;
            0    3     2   desc  Ljava/lang/String;
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
       Name  Flags
      value  
      desc   

  public void setOption(int, java.lang.Object);
    descriptor: (ILjava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // int opt
        start local 2 // java.lang.Object value
         0: .line 1013
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 1014
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         2: .line 1016
            iload 1 /* opt */
            lookupswitch { // 10
                    1: 17
                    3: 14
                    4: 36
                    8: 30
                   14: 42
                  128: 3
                 4097: 20
                 4098: 25
                 4099: 33
                 4102: 9
              default: 47
          }
         3: .line 1020
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* value */
            instanceof java.lang.Boolean
            ifeq 6
            aload 2 /* value */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 6
         4: .line 1021
            iconst_m1
            istore 4 /* i */
        start local 4 // int i
         5: .line 1022
            goto 7
        end local 4 // int i
         6: .line 1023
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_LINGER"
            invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
            istore 4 /* i */
        start local 4 // int i
         7: .line 1025
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
            iload 4 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
         8: .line 1026
            goto 52
        end local 4 // int i
         9: .line 1029
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_TIMEOUT"
            invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
            istore 4 /* i */
        start local 4 // int i
        10: .line 1030
            iload 4 /* i */
            ifge 12
        11: .line 1031
            new java.lang.IllegalArgumentException
            dup
            ldc "timeout < 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 1032
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 4 /* i */
            putfield sun.nio.ch.NioSocketImpl.timeout:I
        13: .line 1033
            goto 52
        end local 4 // int i
        14: .line 1036
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "IP_TOS"
            invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
            istore 4 /* i */
        start local 4 // int i
        15: .line 1037
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            iload 4 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;Ljava/lang/Object;)V
        16: .line 1038
            goto 52
        end local 4 // int i
        17: .line 1041
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "TCP_NODELAY"
            invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
            istore 4 /* b */
        start local 4 // boolean b
        18: .line 1042
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
            iload 4 /* b */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        19: .line 1043
            goto 52
        end local 4 // boolean b
        20: .line 1046
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_SNDBUF"
            invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
            istore 4 /* i */
        start local 4 // int i
        21: .line 1047
            iload 4 /* i */
            ifgt 23
        22: .line 1048
            new java.net.SocketException
            dup
            ldc "SO_SNDBUF <= 0"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 1049
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
            iload 4 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        24: .line 1050
            goto 52
        end local 4 // int i
        25: .line 1053
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_RCVBUF"
            invokevirtual sun.nio.ch.NioSocketImpl.intValue:(Ljava/lang/Object;Ljava/lang/String;)I
            istore 4 /* i */
        start local 4 // int i
        26: .line 1054
            iload 4 /* i */
            ifgt 28
        27: .line 1055
            new java.net.SocketException
            dup
            ldc "SO_RCVBUF <= 0"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 1056
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
            iload 4 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        29: .line 1057
            goto 52
        end local 4 // int i
        30: .line 1060
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_KEEPALIVE"
            invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
            istore 4 /* b */
        start local 4 // boolean b
        31: .line 1061
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
            iload 4 /* b */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        32: .line 1062
            goto 52
        end local 4 // boolean b
        33: .line 1065
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_OOBINLINE"
            invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
            istore 4 /* b */
        start local 4 // boolean b
        34: .line 1066
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.ExtendedSocketOption.SO_OOBINLINE:Ljava/net/SocketOption;
            iload 4 /* b */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        35: .line 1067
            goto 52
        end local 4 // boolean b
        36: .line 1070
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_REUSEADDR"
            invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
            istore 4 /* b */
        start local 4 // boolean b
        37: .line 1071
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 40
        38: .line 1072
            aload 0 /* this */
            iload 4 /* b */
            putfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
        39: .line 1073
            goto 52
        40: .line 1074
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            iload 4 /* b */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        41: .line 1076
            goto 52
        end local 4 // boolean b
        42: .line 1079
      StackMap locals:
      StackMap stack:
            invokestatic sun.nio.ch.Net.isReusePortAvailable:()Z
            ifne 44
        43: .line 1080
            new java.net.SocketException
            dup
            ldc "SO_REUSEPORT not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 1081
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* value */
            ldc "SO_REUSEPORT"
            invokevirtual sun.nio.ch.NioSocketImpl.booleanValue:(Ljava/lang/Object;Ljava/lang/String;)Z
            istore 4 /* b */
        start local 4 // boolean b
        45: .line 1082
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_REUSEPORT:Ljava/net/SocketOption;
            iload 4 /* b */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic sun.nio.ch.Net.setSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;Ljava/lang/Object;)V
        46: .line 1083
            goto 52
        end local 4 // boolean b
        47: .line 1086
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown option "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* opt */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 1088
      StackMap locals:
      StackMap stack: java.net.SocketException
            astore 4 /* e */
        start local 4 // java.net.SocketException e
        49: .line 1089
            aload 4 /* e */
            athrow
        end local 4 // java.net.SocketException e
        50: .line 1090
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 4 /* e */
        start local 4 // java.lang.Exception e
        51: .line 1091
            new java.net.SocketException
            dup
            aload 4 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.lang.Exception e
        52: .line 1013
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        53: goto 56
      StackMap locals:
      StackMap stack: java.lang.Throwable
        54: aload 3
            monitorexit
        55: athrow
        56: .line 1094
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object value
        end local 1 // int opt
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   57     0   this  Lsun/nio/ch/NioSocketImpl;
            0   57     1    opt  I
            0   57     2  value  Ljava/lang/Object;
            5    6     4      i  I
            7    9     4      i  I
           10   14     4      i  I
           15   17     4      i  I
           18   20     4      b  Z
           21   25     4      i  I
           26   30     4      i  I
           31   33     4      b  Z
           34   36     4      b  Z
           37   42     4      b  Z
           45   47     4      b  Z
           49   50     4      e  Ljava/net/SocketException;
           51   52     4      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2    48      48  Class java.net.SocketException
           2    48      50  Class java.lang.IllegalArgumentException
           2    48      50  Class java.io.IOException
           1    53      54  any
          54    55      54  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
       Name  Flags
      opt    
      value  

  public java.lang.Object getOption(int);
    descriptor: (I)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // int opt
         0: .line 1098
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 1099
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpen:()V
         2: .line 1101
            iload 1 /* opt */
            lookupswitch { // 11
                    1: 6
                    3: 36
                    4: 20
                    8: 39
                   14: 42
                   15: 27
                  128: 12
                 4097: 30
                 4098: 33
                 4099: 9
                 4102: 3
              default: 47
          }
         3: .line 1103
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.timeout:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
         4: aload 2
            monitorexit
         5: areturn
         6: .line 1105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.TCP_NODELAY:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
         7: aload 2
            monitorexit
         8: areturn
         9: .line 1107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic sun.nio.ch.ExtendedSocketOption.SO_OOBINLINE:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
        10: aload 2
            monitorexit
        11: areturn
        12: .line 1110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_LINGER:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 3 /* i */
        start local 3 // int i
        13: .line 1111
            iload 3 /* i */
            iconst_m1
            if_icmpne 17
        14: .line 1112
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
        15: aload 2
            monitorexit
        16: areturn
        17: .line 1114
      StackMap locals: int
      StackMap stack:
            iload 3 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        18: aload 2
            monitorexit
        19: areturn
        end local 3 // int i
        20: .line 1118
      StackMap locals:
      StackMap stack:
            invokestatic sun.nio.ch.Net.useExclusiveBind:()Z
            ifeq 24
        21: .line 1119
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.isReuseAddress:Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        22: aload 2
            monitorexit
        23: areturn
        24: .line 1121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_REUSEADDR:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
        25: aload 2
            monitorexit
        26: areturn
        27: .line 1124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
        28: aload 2
            monitorexit
        29: areturn
        30: .line 1126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_SNDBUF:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
        31: aload 2
            monitorexit
        32: areturn
        33: .line 1128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_RCVBUF:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
        34: aload 2
            monitorexit
        35: areturn
        36: .line 1130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.NioSocketImpl.family:()Ljava/net/ProtocolFamily;
            getstatic java.net.StandardSocketOptions.IP_TOS:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/ProtocolFamily;Ljava/net/SocketOption;)Ljava/lang/Object;
        37: aload 2
            monitorexit
        38: areturn
        39: .line 1132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_KEEPALIVE:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
        40: aload 2
            monitorexit
        41: areturn
        42: .line 1134
      StackMap locals:
      StackMap stack:
            invokestatic sun.nio.ch.Net.isReusePortAvailable:()Z
            ifne 44
        43: .line 1135
            new java.net.SocketException
            dup
            ldc "SO_REUSEPORT not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 1136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            getstatic java.net.StandardSocketOptions.SO_REUSEPORT:Ljava/net/SocketOption;
            invokestatic sun.nio.ch.Net.getSocketOption:(Ljava/io/FileDescriptor;Ljava/net/SocketOption;)Ljava/lang/Object;
        45: aload 2
            monitorexit
        46: areturn
        47: .line 1138
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown option "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* opt */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 1140
      StackMap locals:
      StackMap stack: java.net.SocketException
            astore 3 /* e */
        start local 3 // java.net.SocketException e
        49: .line 1141
            aload 3 /* e */
            athrow
        end local 3 // java.net.SocketException e
        50: .line 1142
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 3 /* e */
        start local 3 // java.lang.Exception e
        51: .line 1143
            new java.net.SocketException
            dup
            aload 3 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.Exception e
        52: .line 1098
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        53: athrow
        end local 1 // int opt
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   54     0  this  Lsun/nio/ch/NioSocketImpl;
            0   54     1   opt  I
           13   20     3     i  I
           49   50     3     e  Ljava/net/SocketException;
           51   52     3     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     4      48  Class java.net.SocketException
           6     7      48  Class java.net.SocketException
           9    10      48  Class java.net.SocketException
          12    15      48  Class java.net.SocketException
          17    18      48  Class java.net.SocketException
          20    22      48  Class java.net.SocketException
          24    25      48  Class java.net.SocketException
          27    28      48  Class java.net.SocketException
          30    31      48  Class java.net.SocketException
          33    34      48  Class java.net.SocketException
          36    37      48  Class java.net.SocketException
          39    40      48  Class java.net.SocketException
          42    45      48  Class java.net.SocketException
          47    48      48  Class java.net.SocketException
           2     4      50  Class java.lang.IllegalArgumentException
           6     7      50  Class java.lang.IllegalArgumentException
           9    10      50  Class java.lang.IllegalArgumentException
          12    15      50  Class java.lang.IllegalArgumentException
          17    18      50  Class java.lang.IllegalArgumentException
          20    22      50  Class java.lang.IllegalArgumentException
          24    25      50  Class java.lang.IllegalArgumentException
          27    28      50  Class java.lang.IllegalArgumentException
          30    31      50  Class java.lang.IllegalArgumentException
          33    34      50  Class java.lang.IllegalArgumentException
          36    37      50  Class java.lang.IllegalArgumentException
          39    40      50  Class java.lang.IllegalArgumentException
          42    45      50  Class java.lang.IllegalArgumentException
          47    48      50  Class java.lang.IllegalArgumentException
           2     4      50  Class java.io.IOException
           6     7      50  Class java.io.IOException
           9    10      50  Class java.io.IOException
          12    15      50  Class java.io.IOException
          17    18      50  Class java.io.IOException
          20    22      50  Class java.io.IOException
          24    25      50  Class java.io.IOException
          27    28      50  Class java.io.IOException
          30    31      50  Class java.io.IOException
          33    34      50  Class java.io.IOException
          36    37      50  Class java.io.IOException
          39    40      50  Class java.io.IOException
          42    45      50  Class java.io.IOException
          47    48      50  Class java.io.IOException
           1     5      52  any
           6     8      52  any
           9    11      52  any
          12    16      52  any
          17    19      52  any
          20    23      52  any
          24    26      52  any
          27    29      52  any
          30    32      52  any
          33    35      52  any
          36    38      52  any
          39    41      52  any
          42    46      52  any
          47    53      52  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
      Name  Flags
      opt   

  protected void shutdownInput();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 1150
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 1151
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
         2: .line 1152
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
            ifne 5
         3: .line 1153
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
            invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
         4: .line 1154
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.isInputClosed:Z
         5: .line 1150
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 1
            monitorexit
         8: athrow
         9: .line 1157
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           1     6       7  any
           7     8       7  any
    Exceptions:
      throws java.io.IOException

  protected void shutdownOutput();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 1161
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 1162
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.ensureOpenAndConnected:()V
         2: .line 1163
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.isOutputClosed:Z
            ifne 5
         3: .line 1164
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
            invokestatic sun.nio.ch.Net.shutdown:(Ljava/io/FileDescriptor;I)V
         4: .line 1165
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.NioSocketImpl.isOutputClosed:Z
         5: .line 1161
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 1
            monitorexit
         8: athrow
         9: .line 1168
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lsun/nio/ch/NioSocketImpl;
      Exception table:
        from    to  target  type
           1     6       7  any
           7     8       7  any
    Exceptions:
      throws java.io.IOException

  protected boolean supportsUrgentData();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.NioSocketImpl this
         0: .line 1172
            iconst_1
            ireturn
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/NioSocketImpl;

  protected void sendUrgentData(int);
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // sun.nio.ch.NioSocketImpl this
        start local 1 // int data
         0: .line 1177
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 1179
            iconst_0
            istore 2 /* n */
        start local 2 // int n
         2: .line 1180
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.beginWrite:()Ljava/io/FileDescriptor;
            astore 3 /* fd */
        start local 3 // java.io.FileDescriptor fd
         3: .line 1183
      StackMap locals: int java.io.FileDescriptor
      StackMap stack:
            aload 3 /* fd */
            iload 1 /* data */
            i2b
            invokestatic sun.nio.ch.Net.sendOOB:(Ljava/io/FileDescriptor;B)I
            istore 2 /* n */
         4: .line 1184
            iload 2 /* n */
            bipush -3
            if_icmpne 5
            aload 0 /* this */
            invokevirtual sun.nio.ch.NioSocketImpl.isOpen:()Z
            ifne 3
         5: .line 1185
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 12
         6: .line 1186
            new java.net.SocketException
            dup
            ldc "No buffer space available"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 1188
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         8: .line 1189
            aload 0 /* this */
            iload 2 /* n */
            ifle 9
            iconst_1
            goto 10
      StackMap locals: sun.nio.ch.NioSocketImpl int int java.io.FileDescriptor java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl
         9: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl int int java.io.FileDescriptor java.lang.Throwable
      StackMap stack: sun.nio.ch.NioSocketImpl int
        10: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
        11: .line 1190
            aload 4
            athrow
        12: .line 1189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* n */
            ifle 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack: sun.nio.ch.NioSocketImpl
        13: iconst_0
      StackMap locals: sun.nio.ch.NioSocketImpl int int java.io.FileDescriptor
      StackMap stack: sun.nio.ch.NioSocketImpl int
        14: invokevirtual sun.nio.ch.NioSocketImpl.endWrite:(Z)V
        end local 3 // java.io.FileDescriptor fd
        end local 2 // int n
        15: .line 1191
            goto 19
      StackMap locals: sun.nio.ch.NioSocketImpl int
      StackMap stack: java.lang.Throwable
        16: astore 5
        17: .line 1192
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        18: .line 1193
            aload 5
            athrow
        19: .line 1192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.NioSocketImpl.writeLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        20: .line 1194
            return
        end local 1 // int data
        end local 0 // sun.nio.ch.NioSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   21     0  this  Lsun/nio/ch/NioSocketImpl;
            0   21     1  data  I
            2   15     2     n  I
            3   15     3    fd  Ljava/io/FileDescriptor;
      Exception table:
        from    to  target  type
           3     7       7  any
           1    16      16  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  

  private static java.lang.Runnable closerFor(java.io.FileDescriptor, boolean);
    descriptor: (Ljava/io/FileDescriptor;Z)Ljava/lang/Runnable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // java.io.FileDescriptor fd
        start local 1 // boolean stream
         0: .line 1200
            iload 1 /* stream */
            ifeq 2
         1: .line 1201
            aload 0 /* fd */
            invokedynamic run(Ljava/io/FileDescriptor;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  sun/nio/ch/NioSocketImpl.lambda$0(Ljava/io/FileDescriptor;)V (6)
                  ()V
            areturn
         2: .line 1209
      StackMap locals:
      StackMap stack:
            aload 0 /* fd */
            invokedynamic run(Ljava/io/FileDescriptor;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  sun/nio/ch/NioSocketImpl.lambda$1(Ljava/io/FileDescriptor;)V (6)
                  ()V
            areturn
        end local 1 // boolean stream
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0      fd  Ljava/io/FileDescriptor;
            0    3     1  stream  Z
    MethodParameters:
        Name  Flags
      fd      
      stream  

  private static long tryLock(java.util.concurrent.locks.ReentrantLock, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/locks/ReentrantLock;JLjava/util/concurrent/TimeUnit;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // java.util.concurrent.locks.ReentrantLock lock
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 1228
            getstatic sun.nio.ch.NioSocketImpl.$assertionsDisabled:Z
            ifne 1
            lload 1 /* timeout */
            lconst_0
            lcmp
            ifgt 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 1229
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* interrupted */
        start local 4 // boolean interrupted
         2: .line 1230
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 1 /* timeout */
            aload 3 /* unit */
            invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
            lstore 5 /* nanos */
        start local 5 // long nanos
         3: .line 1231
            lload 5 /* nanos */
            lstore 7 /* remainingNanos */
        start local 7 // long remainingNanos
         4: .line 1232
            invokestatic java.lang.System.nanoTime:()J
            lstore 9 /* startNanos */
        start local 9 // long startNanos
         5: .line 1233
            iconst_0
            istore 11 /* acquired */
        start local 11 // boolean acquired
         6: .line 1234
            goto 12
         7: .line 1236
      StackMap locals: java.util.concurrent.locks.ReentrantLock long java.util.concurrent.TimeUnit int long long long int
      StackMap stack:
            aload 0 /* lock */
            lload 7 /* remainingNanos */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.locks.ReentrantLock.tryLock:(JLjava/util/concurrent/TimeUnit;)Z
            istore 11 /* acquired */
         8: .line 1237
            goto 11
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         9: pop
        10: .line 1238
            iconst_1
            istore 4 /* interrupted */
        11: .line 1240
      StackMap locals:
      StackMap stack:
            lload 5 /* nanos */
            invokestatic java.lang.System.nanoTime:()J
            lload 9 /* startNanos */
            lsub
            lsub
            lstore 7 /* remainingNanos */
        12: .line 1234
      StackMap locals:
      StackMap stack:
            iload 11 /* acquired */
            ifne 13
            lload 7 /* remainingNanos */
            lconst_0
            lcmp
            ifgt 7
        13: .line 1242
      StackMap locals:
      StackMap stack:
            iload 11 /* acquired */
            ifeq 15
            lload 7 /* remainingNanos */
            lconst_0
            lcmp
            ifgt 15
        14: .line 1243
            aload 0 /* lock */
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        15: .line 1244
      StackMap locals:
      StackMap stack:
            iload 4 /* interrupted */
            ifeq 17
        16: .line 1245
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        17: .line 1246
      StackMap locals:
      StackMap stack:
            lload 7 /* remainingNanos */
            lreturn
        end local 11 // boolean acquired
        end local 9 // long startNanos
        end local 7 // long remainingNanos
        end local 5 // long nanos
        end local 4 // boolean interrupted
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long timeout
        end local 0 // java.util.concurrent.locks.ReentrantLock lock
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0            lock  Ljava/util/concurrent/locks/ReentrantLock;
            0   18     1         timeout  J
            0   18     3            unit  Ljava/util/concurrent/TimeUnit;
            2   18     4     interrupted  Z
            3   18     5           nanos  J
            4   18     7  remainingNanos  J
            5   18     9      startNanos  J
            6   18    11        acquired  Z
      Exception table:
        from    to  target  type
           7     8       9  Class java.lang.InterruptedException
    MethodParameters:
         Name  Flags
      lock     
      timeout  
      unit     

  private static java.net.ProtocolFamily family();
    descriptor: ()Ljava/net/ProtocolFamily;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1253
            invokestatic sun.nio.ch.Net.isIPv6Available:()Z
            ifeq 2
         1: .line 1254
            getstatic java.net.StandardProtocolFamily.INET6:Ljava/net/StandardProtocolFamily;
            areturn
         2: .line 1256
      StackMap locals:
      StackMap stack:
            getstatic java.net.StandardProtocolFamily.INET:Ljava/net/StandardProtocolFamily;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$0(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=1
         0: .line 1203
            getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
         1: .line 1204
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
         3: .line 1205
            new java.io.UncheckedIOException
            dup
            aload 1 /* ioe */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        end local 1 // java.io.IOException ioe
         4: .line 1207
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3    4     1   ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException

  private static void lambda$1(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=1
         0: .line 1211
            getstatic sun.nio.ch.NioSocketImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
         1: .line 1212
            goto 7
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
         3: .line 1213
            new java.io.UncheckedIOException
            dup
            aload 1 /* ioe */
            invokespecial java.io.UncheckedIOException.<init>:(Ljava/io/IOException;)V
            athrow
        end local 1 // java.io.IOException ioe
         4: .line 1214
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
         5: .line 1216
            invokestatic sun.net.ResourceManager.afterUdpClose:()V
         6: .line 1217
            aload 2
            athrow
         7: .line 1216
      StackMap locals:
      StackMap stack:
            invokestatic sun.net.ResourceManager.afterUdpClose:()V
         8: .line 1218
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3    4     1   ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
           0     4       4  any
}
SourceFile: "NioSocketImpl.java"
NestMembers:
  sun.nio.ch.NioSocketImpl$1  sun.nio.ch.NioSocketImpl$2
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Cleanable = java.lang.ref.Cleaner$Cleanable of java.lang.ref.Cleaner
  sun.nio.ch.NioSocketImpl$1
  sun.nio.ch.NioSocketImpl$2