class sun.nio.ch.UnixAsynchronousSocketChannelImpl extends sun.nio.ch.AsynchronousSocketChannelImpl implements sun.nio.ch.Port$PollableChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.nio.ch.UnixAsynchronousSocketChannelImpl
  super_class: sun.nio.ch.AsynchronousSocketChannelImpl
{
  private static final sun.nio.ch.NativeDispatcher nd;
    descriptor: Lsun/nio/ch/NativeDispatcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean disableSynchronousRead;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final sun.nio.ch.Port port;
    descriptor: Lsun/nio/ch/Port;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

  private java.nio.channels.CompletionHandler<java.lang.Void, java.lang.Object> connectHandler;
    descriptor: Ljava/nio/channels/CompletionHandler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;

  private java.lang.Object connectAttachment;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private sun.nio.ch.PendingFuture<java.lang.Void, java.lang.Object> connectFuture;
    descriptor: Lsun/nio/ch/PendingFuture;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lsun/nio/ch/PendingFuture<Ljava/lang/Void;Ljava/lang/Object;>;

  private java.net.SocketAddress pendingRemote;
    descriptor: Ljava/net/SocketAddress;
    flags: (0x0002) ACC_PRIVATE

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

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

  private java.nio.ByteBuffer readBuffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.ByteBuffer[] readBuffers;
    descriptor: [Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.channels.CompletionHandler<java.lang.Number, java.lang.Object> readHandler;
    descriptor: Ljava/nio/channels/CompletionHandler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;

  private java.lang.Object readAttachment;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private sun.nio.ch.PendingFuture<java.lang.Number, java.lang.Object> readFuture;
    descriptor: Lsun/nio/ch/PendingFuture;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;

  private java.util.concurrent.Future<?> readTimer;
    descriptor: Ljava/util/concurrent/Future;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/Future<*>;

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

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

  private java.nio.ByteBuffer writeBuffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.ByteBuffer[] writeBuffers;
    descriptor: [Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.channels.CompletionHandler<java.lang.Number, java.lang.Object> writeHandler;
    descriptor: Ljava/nio/channels/CompletionHandler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;

  private java.lang.Object writeAttachment;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private sun.nio.ch.PendingFuture<java.lang.Number, java.lang.Object> writeFuture;
    descriptor: Lsun/nio/ch/PendingFuture;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;

  private java.util.concurrent.Future<?> writeTimer;
    descriptor: Ljava/util/concurrent/Future;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/Future<*>;

  private java.lang.Runnable readTimeoutTask;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Runnable writeTimeoutTask;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0002) ACC_PRIVATE

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 44
            ldc Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            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.UnixAsynchronousSocketChannelImpl.$assertionsDisabled:Z
         3: .line 47
            new sun.nio.ch.SocketDispatcher
            dup
            invokespecial sun.nio.ch.SocketDispatcher.<init>:()V
            putstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
         4: .line 53
            ldc "sun.nio.ch.disableSynchronousRead"
            ldc "false"
         5: .line 52
            invokestatic sun.security.action.GetPropertyAction.privilegedGetProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* propValue */
        start local 0 // java.lang.String propValue
         6: .line 54
            aload 0 /* propValue */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 8
         7: .line 55
            iconst_1
            goto 9
      StackMap locals: java.lang.String
      StackMap stack:
         8: aload 0 /* propValue */
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
         9: .line 54
      StackMap locals:
      StackMap stack: int
            putstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
        end local 0 // java.lang.String propValue
        10: .line 767
            invokestatic sun.nio.ch.IOUtil.load:()V
        11: .line 768
            return
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            6   10     0  propValue  Ljava/lang/String;

  void <init>(sun.nio.ch.Port);
    descriptor: (Lsun/nio/ch/Port;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // sun.nio.ch.Port port
         0: .line 98
            aload 0 /* this */
            aload 1 /* port */
            invokespecial sun.nio.ch.AsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
         1: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
         2: .line 450
            aload 0 /* this */
            new sun.nio.ch.UnixAsynchronousSocketChannelImpl$1
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$1.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimeoutTask:Ljava/lang/Runnable;
         3: .line 648
            aload 0 /* this */
            new sun.nio.ch.UnixAsynchronousSocketChannelImpl$2
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$2.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimeoutTask:Ljava/lang/Runnable;
         4: .line 102
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         5: .line 103
            goto 9
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl sun.nio.ch.Port
      StackMap stack: java.io.IOException
         6: astore 2 /* x */
        start local 2 // java.io.IOException x
         7: .line 104
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
         8: .line 105
            aload 2 /* x */
            athrow
        end local 2 // java.io.IOException x
         9: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* port */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
        10: .line 109
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
        11: .line 112
            aload 1 /* port */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            aload 0 /* this */
            invokevirtual sun.nio.ch.Port.register:(ILsun/nio/ch/Port$PollableChannel;)V
        12: .line 113
            return
        end local 1 // sun.nio.ch.Port port
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   13     1  port  Lsun/nio/ch/Port;
            7    9     2     x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      port  

  void <init>(sun.nio.ch.Port, java.io.FileDescriptor, java.net.InetSocketAddress);
    descriptor: (Lsun/nio/ch/Port;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // sun.nio.ch.Port port
        start local 2 // java.io.FileDescriptor fd
        start local 3 // java.net.InetSocketAddress remote
         0: .line 121
            aload 0 /* this */
            aload 1 /* port */
            aload 2 /* fd */
            aload 3 /* remote */
            invokespecial sun.nio.ch.AsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)V
         1: .line 63
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
         2: .line 450
            aload 0 /* this */
            new sun.nio.ch.UnixAsynchronousSocketChannelImpl$1
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$1.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimeoutTask:Ljava/lang/Runnable;
         3: .line 648
            aload 0 /* this */
            new sun.nio.ch.UnixAsynchronousSocketChannelImpl$2
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.UnixAsynchronousSocketChannelImpl$2.<init>:(Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;)V
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimeoutTask:Ljava/lang/Runnable;
         4: .line 123
            aload 0 /* this */
            aload 2 /* fd */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
         5: .line 124
            aload 2 /* fd */
            iconst_0
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         6: .line 127
            aload 1 /* port */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            aload 0 /* this */
            invokevirtual sun.nio.ch.Port.register:(ILsun/nio/ch/Port$PollableChannel;)V
         7: .line 128
            goto 10
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl sun.nio.ch.Port java.io.FileDescriptor java.net.InetSocketAddress
      StackMap stack: java.nio.channels.ShutdownChannelGroupException
         8: astore 4 /* x */
        start local 4 // java.nio.channels.ShutdownChannelGroupException x
         9: .line 131
            new java.io.IOException
            dup
            aload 4 /* x */
            invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.nio.channels.ShutdownChannelGroupException x
        10: .line 134
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* port */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
        11: .line 135
            return
        end local 3 // java.net.InetSocketAddress remote
        end local 2 // java.io.FileDescriptor fd
        end local 1 // sun.nio.ch.Port port
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   12     1    port  Lsun/nio/ch/Port;
            0   12     2      fd  Ljava/io/FileDescriptor;
            0   12     3  remote  Ljava/net/InetSocketAddress;
            9   10     4       x  Ljava/nio/channels/ShutdownChannelGroupException;
      Exception table:
        from    to  target  type
           6     7       8  Class java.nio.channels.ShutdownChannelGroupException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      port    
      fd      
      remote  

  public sun.nio.ch.AsynchronousChannelGroupImpl group();
    descriptor: ()Lsun/nio/ch/AsynchronousChannelGroupImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
         0: .line 139
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            areturn
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;

  private void updateEvents();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
         0: .line 144
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 145
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* events */
        start local 1 // int events
         2: .line 146
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
            ifeq 4
         3: .line 147
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLIN:S
            ior
            istore 1 /* events */
         4: .line 148
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
            ifne 5
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
            ifeq 6
         5: .line 149
      StackMap locals:
      StackMap stack:
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLOUT:S
            ior
            istore 1 /* events */
         6: .line 150
      StackMap locals:
      StackMap stack:
            iload 1 /* events */
            ifeq 8
         7: .line 151
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            iload 1 /* events */
            invokevirtual sun.nio.ch.Port.startPoll:(II)V
         8: .line 152
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int events
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            2    9     1  events  I

  private void lockAndUpdateEvents();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
         0: .line 156
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 157
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
         2: .line 156
            aload 1
            monitorexit
         3: goto 6
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 1
            monitorexit
         5: athrow
         6: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  private void finish(boolean, boolean, boolean);
    descriptor: (ZZZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=8, args_size=4
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean mayInvokeDirect
        start local 2 // boolean readable
        start local 3 // boolean writable
         0: .line 166
            iconst_0
            istore 4 /* finishRead */
        start local 4 // boolean finishRead
         1: .line 167
            iconst_0
            istore 5 /* finishWrite */
        start local 5 // boolean finishWrite
         2: .line 168
            iconst_0
            istore 6 /* finishConnect */
        start local 6 // boolean finishConnect
         3: .line 171
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
         4: .line 172
            iload 2 /* readable */
            ifeq 7
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
            ifeq 7
         5: .line 173
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
         6: .line 174
            iconst_1
            istore 4 /* finishRead */
         7: .line 176
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int int int int int java.lang.Object
      StackMap stack:
            iload 3 /* writable */
            ifeq 15
         8: .line 177
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
            ifeq 12
         9: .line 178
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        10: .line 179
            iconst_1
            istore 5 /* finishWrite */
        11: .line 180
            goto 15
      StackMap locals:
      StackMap stack:
        12: aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
            ifeq 15
        13: .line 181
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
        14: .line 182
            iconst_1
            istore 6 /* finishConnect */
        15: .line 171
      StackMap locals:
      StackMap stack:
            aload 7
            monitorexit
        16: goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: aload 7
            monitorexit
        18: athrow
        19: .line 190
      StackMap locals:
      StackMap stack:
            iload 4 /* finishRead */
            ifeq 24
        20: .line 191
            iload 5 /* finishWrite */
            ifeq 22
        21: .line 192
            aload 0 /* this */
            iconst_0
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
        22: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead:(Z)V
        23: .line 194
            return
        24: .line 196
      StackMap locals:
      StackMap stack:
            iload 5 /* finishWrite */
            ifeq 26
        25: .line 197
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
        26: .line 199
      StackMap locals:
      StackMap stack:
            iload 6 /* finishConnect */
            ifeq 28
        27: .line 200
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect:(Z)V
        28: .line 202
      StackMap locals:
      StackMap stack:
            return
        end local 6 // boolean finishConnect
        end local 5 // boolean finishWrite
        end local 4 // boolean finishRead
        end local 3 // boolean writable
        end local 2 // boolean readable
        end local 1 // boolean mayInvokeDirect
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   29     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   29     1  mayInvokeDirect  Z
            0   29     2         readable  Z
            0   29     3         writable  Z
            1   29     4       finishRead  Z
            2   29     5      finishWrite  Z
            3   29     6    finishConnect  Z
      Exception table:
        from    to  target  type
           4    16      17  any
          17    18      17  any
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  
      readable         
      writable         

  public void onEvent(int, boolean);
    descriptor: (IZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // int events
        start local 2 // boolean mayInvokeDirect
         0: .line 209
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLIN:S
            iand
            ifle 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 3 /* readable */
        start local 3 // boolean readable
         3: .line 210
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLOUT:S
            iand
            ifle 4
            iconst_1
            goto 5
      StackMap locals: int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 4 /* writable */
        start local 4 // boolean writable
         6: .line 211
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLERR:S
            getstatic sun.nio.ch.Net.POLLHUP:S
            ior
            iand
            ifle 9
         7: .line 212
            iconst_1
            istore 3 /* readable */
         8: .line 213
            iconst_1
            istore 4 /* writable */
         9: .line 215
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* mayInvokeDirect */
            iload 3 /* readable */
            iload 4 /* writable */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish:(ZZZ)V
        10: .line 216
            return
        end local 4 // boolean writable
        end local 3 // boolean readable
        end local 2 // boolean mayInvokeDirect
        end local 1 // int events
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   11     1           events  I
            0   11     2  mayInvokeDirect  Z
            3   11     3         readable  Z
            6   11     4         writable  Z
    MethodParameters:
                 Name  Flags
      events           
      mayInvokeDirect  

  void implClose();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
         0: .line 221
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            invokevirtual sun.nio.ch.Port.unregister:(I)V
         1: .line 224
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
         2: .line 227
            aload 0 /* this */
            iconst_0
            iconst_1
            iconst_1
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish:(ZZZ)V
         3: .line 228
            return
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
    Exceptions:
      throws java.io.IOException

  public void onCancel(sun.nio.ch.PendingFuture<?, ?>);
    descriptor: (Lsun/nio/ch/PendingFuture;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // sun.nio.ch.PendingFuture task
         0: .line 232
            aload 1 /* task */
            invokevirtual sun.nio.ch.PendingFuture.getContext:()Ljava/lang/Object;
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.CONNECT:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
            if_acmpne 2
         1: .line 233
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killConnect:()V
         2: .line 234
      StackMap locals:
      StackMap stack:
            aload 1 /* task */
            invokevirtual sun.nio.ch.PendingFuture.getContext:()Ljava/lang/Object;
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.READ:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
            if_acmpne 4
         3: .line 235
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killReading:()V
         4: .line 236
      StackMap locals:
      StackMap stack:
            aload 1 /* task */
            invokevirtual sun.nio.ch.PendingFuture.getContext:()Ljava/lang/Object;
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.WRITE:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
            if_acmpne 6
         5: .line 237
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killWriting:()V
         6: .line 238
      StackMap locals:
      StackMap stack:
            return
        end local 1 // sun.nio.ch.PendingFuture task
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0    7     1  task  Lsun/nio/ch/PendingFuture<**>;
    Signature: (Lsun/nio/ch/PendingFuture<**>;)V
    MethodParameters:
      Name  Flags
      task  

  private void setConnected();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
         0: .line 243
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 244
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
         2: .line 245
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.Net.localAddress:(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress;
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
         3: .line 246
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.remoteAddress:Ljava/net/InetSocketAddress;
         4: .line 243
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 248
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.IOException

  private void finishConnect(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean mayInvokeDirect
         0: .line 251
            aconst_null
            astore 2 /* e */
        start local 2 // java.lang.Throwable e
         1: .line 253
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         2: .line 254
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            invokestatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect:(I)V
         3: .line 255
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
         4: .line 256
            goto 13
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.lang.Throwable
      StackMap stack: java.lang.Throwable
         5: astore 3 /* x */
        start local 3 // java.lang.Throwable x
         6: .line 257
            aload 3 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 8
         7: .line 258
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 3 /* x */
         8: .line 259
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3 /* x */
            astore 2 /* e */
        end local 3 // java.lang.Throwable x
         9: .line 261
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 14
        10: .line 260
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 4
        11: .line 261
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        12: .line 262
            aload 4
            athrow
        13: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        14: .line 263
      StackMap locals:
      StackMap stack:
            aload 2 /* e */
            ifnull 22
        15: .line 264
            aload 2 /* e */
            instanceof java.io.IOException
            ifeq 18
        16: .line 265
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            astore 3 /* isa */
        start local 3 // java.net.InetSocketAddress isa
        17: .line 266
            aload 2 /* e */
            checkcast java.io.IOException
            aload 3 /* isa */
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            astore 2 /* e */
        end local 3 // java.net.InetSocketAddress isa
        18: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
        19: .line 271
            goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 3 /* suppressed */
        start local 3 // java.lang.Throwable suppressed
        21: .line 272
            aload 2 /* e */
            aload 3 /* suppressed */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable suppressed
        22: .line 277
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
            astore 3 /* handler */
        start local 3 // java.nio.channels.CompletionHandler handler
        23: .line 278
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
        24: .line 279
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
            astore 4 /* att */
        start local 4 // java.lang.Object att
        25: .line 280
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
            astore 5 /* future */
        start local 5 // sun.nio.ch.PendingFuture future
        26: .line 281
            aload 3 /* handler */
            ifnonnull 29
        27: .line 282
            aload 5 /* future */
            aconst_null
            aload 2 /* e */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        28: .line 283
            goto 33
        29: .line 284
      StackMap locals: java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 32
        30: .line 285
            aload 3 /* handler */
            aload 4 /* att */
            aconst_null
            aload 2 /* e */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        31: .line 286
            goto 33
        32: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* handler */
            aload 4 /* att */
            aconst_null
            aload 2 /* e */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        33: .line 290
      StackMap locals:
      StackMap stack:
            return
        end local 5 // sun.nio.ch.PendingFuture future
        end local 4 // java.lang.Object att
        end local 3 // java.nio.channels.CompletionHandler handler
        end local 2 // java.lang.Throwable e
        end local 1 // boolean mayInvokeDirect
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   34     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   34     1  mayInvokeDirect  Z
            1   34     2                e  Ljava/lang/Throwable;
            6    9     3                x  Ljava/lang/Throwable;
           17   18     3              isa  Ljava/net/InetSocketAddress;
           21   22     3       suppressed  Ljava/lang/Throwable;
           23   34     3          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;
           25   34     4              att  Ljava/lang/Object;
           26   34     5           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Void;Ljava/lang/Object;>;
      Exception table:
        from    to  target  type
           1     4       5  Class java.lang.Throwable
           1     9      10  any
          18    19      20  Class java.lang.Throwable
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  

  <A> java.util.concurrent.Future<java.lang.Void> implConnect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
    descriptor: (Ljava/net/SocketAddress;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=5, locals=13, args_size=4
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // java.net.SocketAddress remote
        start local 2 // java.lang.Object attachment
        start local 3 // java.nio.channels.CompletionHandler handler
         0: .line 298
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.isOpen:()Z
            ifne 6
         1: .line 299
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            astore 4 /* e */
        start local 4 // java.lang.Throwable e
         2: .line 300
            aload 3 /* handler */
            ifnonnull 4
         3: .line 301
            aload 4 /* e */
            invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
         4: .line 303
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            aload 3 /* handler */
            aload 2 /* attachment */
            aconst_null
            aload 4 /* e */
            invokestatic sun.nio.ch.Invoker.invoke:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
         5: .line 304
            aconst_null
            areturn
        end local 4 // java.lang.Throwable e
         6: .line 308
      StackMap locals:
      StackMap stack:
            aload 1 /* remote */
            invokestatic sun.nio.ch.Net.checkAddress:(Ljava/net/SocketAddress;)Ljava/net/InetSocketAddress;
            astore 4 /* isa */
        start local 4 // java.net.InetSocketAddress isa
         7: .line 311
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* sm */
        start local 5 // java.lang.SecurityManager sm
         8: .line 312
            aload 5 /* sm */
            ifnull 10
         9: .line 313
            aload 5 /* sm */
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
        10: .line 317
      StackMap locals: java.net.InetSocketAddress java.lang.SecurityManager
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
        11: .line 318
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
            iconst_2
            if_icmpne 13
        12: .line 319
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            athrow
        13: .line 320
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager top java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
            iconst_1
            if_icmpne 15
        14: .line 321
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
        15: .line 322
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
        16: .line 323
            aload 0 /* this */
            aload 1 /* remote */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
        17: .line 324
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.localAddress:Ljava/net/InetSocketAddress;
            ifnonnull 18
            iconst_1
            goto 19
      StackMap locals:
      StackMap stack:
        18: iconst_0
      StackMap locals:
      StackMap stack: int
        19: istore 6 /* notifyBeforeTcpConnect */
        start local 6 // boolean notifyBeforeTcpConnect
        20: .line 317
            aload 7
            monitorexit
        21: goto 24
        end local 6 // boolean notifyBeforeTcpConnect
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 7
            monitorexit
        23: athrow
        start local 6 // boolean notifyBeforeTcpConnect
        24: .line 327
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager int
      StackMap stack:
            aconst_null
            astore 7 /* e */
        start local 7 // java.lang.Throwable e
        25: .line 329
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        26: .line 331
            iload 6 /* notifyBeforeTcpConnect */
            ifeq 28
        27: .line 332
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.net.NetHooks.beforeTcpConnect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
        28: .line 333
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            aload 4 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokestatic sun.nio.ch.Net.connect:(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)I
            istore 8 /* n */
        start local 8 // int n
        29: .line 334
            iload 8 /* n */
            bipush -2
            if_icmpne 47
        30: .line 336
            aconst_null
            astore 9 /* result */
        start local 9 // sun.nio.ch.PendingFuture result
        31: .line 337
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 10
            monitorenter
        32: .line 338
            aload 3 /* handler */
            ifnonnull 36
        33: .line 339
            new sun.nio.ch.PendingFuture
            dup
            aload 0 /* this */
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.CONNECT:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
            invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/lang/Object;)V
            astore 9 /* result */
        34: .line 340
            aload 0 /* this */
            aload 9 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
        35: .line 341
            goto 38
        36: .line 342
      StackMap locals: int sun.nio.ch.PendingFuture java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 3 /* handler */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
        37: .line 343
            aload 0 /* this */
            aload 2 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
        38: .line 345
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
        39: .line 346
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        40: .line 337
            aload 10
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 10
            monitorexit
        43: athrow
        44: .line 348
      StackMap locals:
      StackMap stack:
            aload 9 /* result */
            astore 12
        45: .line 356
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        46: .line 348
            aload 12
            areturn
        end local 9 // sun.nio.ch.PendingFuture result
        47: .line 350
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
        end local 8 // int n
        48: .line 351
            goto 57
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager int java.lang.Throwable
      StackMap stack: java.lang.Throwable
        49: astore 8 /* x */
        start local 8 // java.lang.Throwable x
        50: .line 352
            aload 8 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 52
        51: .line 353
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 8 /* x */
        52: .line 354
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 8 /* x */
            astore 7 /* e */
        end local 8 // java.lang.Throwable x
        53: .line 356
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 58
        54: .line 355
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl java.net.SocketAddress java.lang.Object java.nio.channels.CompletionHandler java.net.InetSocketAddress java.lang.SecurityManager int java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 11
        55: .line 356
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        56: .line 357
            aload 11
            athrow
        57: .line 356
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        58: .line 360
      StackMap locals:
      StackMap stack:
            aload 7 /* e */
            ifnull 65
        59: .line 361
            aload 7 /* e */
            instanceof java.io.IOException
            ifeq 61
        60: .line 362
            aload 7 /* e */
            checkcast java.io.IOException
            aload 4 /* isa */
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            astore 7 /* e */
        61: .line 365
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
        62: .line 366
            goto 65
      StackMap locals:
      StackMap stack: java.lang.Throwable
        63: astore 8 /* suppressed */
        start local 8 // java.lang.Throwable suppressed
        64: .line 367
            aload 7 /* e */
            aload 8 /* suppressed */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
        end local 8 // java.lang.Throwable suppressed
        65: .line 370
      StackMap locals:
      StackMap stack:
            aload 3 /* handler */
            ifnonnull 67
        66: .line 371
            aconst_null
            aload 7 /* e */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        67: .line 373
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* handler */
            aload 2 /* attachment */
            aconst_null
            aload 7 /* e */
            invokestatic sun.nio.ch.Invoker.invoke:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        68: .line 374
            aconst_null
            areturn
        end local 7 // java.lang.Throwable e
        end local 6 // boolean notifyBeforeTcpConnect
        end local 5 // java.lang.SecurityManager sm
        end local 4 // java.net.InetSocketAddress isa
        end local 3 // java.nio.channels.CompletionHandler handler
        end local 2 // java.lang.Object attachment
        end local 1 // java.net.SocketAddress remote
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   69     0                    this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   69     1                  remote  Ljava/net/SocketAddress;
            0   69     2              attachment  TA;
            0   69     3                 handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;
            2    6     4                       e  Ljava/lang/Throwable;
            7   69     4                     isa  Ljava/net/InetSocketAddress;
            8   69     5                      sm  Ljava/lang/SecurityManager;
           20   22     6  notifyBeforeTcpConnect  Z
           24   69     6  notifyBeforeTcpConnect  Z
           25   69     7                       e  Ljava/lang/Throwable;
           29   48     8                       n  I
           31   47     9                  result  Lsun/nio/ch/PendingFuture<Ljava/lang/Void;TA;>;
           50   53     8                       x  Ljava/lang/Throwable;
           64   65     8              suppressed  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          11    21      22  any
          22    23      22  any
          32    41      42  any
          42    43      42  any
          25    45      49  Class java.lang.Throwable
          47    48      49  Class java.lang.Throwable
          25    45      54  any
          47    53      54  any
          61    62      63  Class java.lang.Throwable
    Signature: <A:Ljava/lang/Object;>(Ljava/net/SocketAddress;TA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Void;>;
    MethodParameters:
            Name  Flags
      remote      
      attachment  
      handler     

  private void finishRead(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean mayInvokeDirect
         0: .line 381
            iconst_m1
            istore 2 /* n */
        start local 2 // int n
         1: .line 382
            aconst_null
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
         2: .line 385
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
            istore 4 /* scattering */
        start local 4 // boolean scattering
         3: .line 386
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
            astore 5 /* handler */
        start local 5 // java.nio.channels.CompletionHandler handler
         4: .line 387
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
            astore 6 /* att */
        start local 6 // java.lang.Object att
         5: .line 388
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
            astore 7 /* future */
        start local 7 // sun.nio.ch.PendingFuture future
         6: .line 389
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimer:Ljava/util/concurrent/Future;
            astore 8 /* timeout */
        start local 8 // java.util.concurrent.Future timeout
         7: .line 392
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         8: .line 394
            iload 4 /* scattering */
            ifeq 11
         9: .line 395
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            l2i
            istore 2 /* n */
        10: .line 396
            goto 12
        11: .line 397
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
            ldc -1
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 2 /* n */
        12: .line 399
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 23
        13: .line 401
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 402
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
        15: .line 401
            aload 9
            monitorexit
        16: goto 19
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future java.lang.Object
      StackMap stack: java.lang.Throwable
        17: aload 9
            monitorexit
        18: athrow
        19: .line 425
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 21
        20: .line 426
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        21: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        22: .line 404
            return
        23: .line 408
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
        24: .line 409
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
        25: .line 410
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        26: .line 411
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
        27: .line 414
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        28: .line 416
            goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 9 /* x */
        start local 9 // java.lang.Throwable x
        30: .line 417
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        31: .line 418
            aload 9 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 33
        32: .line 419
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 9 /* x */
        33: .line 420
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 9 /* x */
            instanceof sun.net.ConnectionResetException
            ifeq 35
        34: .line 421
            new java.io.IOException
            dup
            aload 9 /* x */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            astore 9 /* x */
        35: .line 422
      StackMap locals:
      StackMap stack:
            aload 9 /* x */
            astore 3 /* exc */
        end local 9 // java.lang.Throwable x
        36: .line 425
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 38
        37: .line 426
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        38: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 47
        39: .line 423
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        40: .line 425
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 42
        41: .line 426
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        42: .line 427
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        43: .line 428
            aload 10
            athrow
        44: .line 425
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 46
        45: .line 426
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        46: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        47: .line 431
      StackMap locals:
      StackMap stack:
            aload 8 /* timeout */
            ifnull 49
        48: .line 432
            aload 8 /* timeout */
            iconst_0
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        49: .line 435
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            ifnull 50
            aconst_null
            goto 53
      StackMap locals:
      StackMap stack:
        50: iload 4 /* scattering */
            ifeq 52
        51: .line 436
            iload 2 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 53
      StackMap locals:
      StackMap stack:
        52: iload 2 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        53: .line 435
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 9 /* result */
        start local 9 // java.lang.Number result
        54: .line 439
            aload 5 /* handler */
            ifnonnull 57
        55: .line 440
            aload 7 /* future */
            aload 9 /* result */
            aload 3 /* exc */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        56: .line 441
            goto 61
        57: .line 442
      StackMap locals: java.lang.Number
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 60
        58: .line 443
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        59: .line 444
            goto 61
        60: .line 445
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        61: .line 448
      StackMap locals:
      StackMap stack:
            return
        end local 9 // java.lang.Number result
        end local 8 // java.util.concurrent.Future timeout
        end local 7 // sun.nio.ch.PendingFuture future
        end local 6 // java.lang.Object att
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // boolean scattering
        end local 3 // java.lang.Throwable exc
        end local 2 // int n
        end local 1 // boolean mayInvokeDirect
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   62     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   62     1  mayInvokeDirect  Z
            1   62     2                n  I
            2   62     3              exc  Ljava/lang/Throwable;
            3   62     4       scattering  Z
            4   62     5          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
            5   62     6              att  Ljava/lang/Object;
            6   62     7           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
            7   62     8          timeout  Ljava/util/concurrent/Future<*>;
           30   36     9                x  Ljava/lang/Throwable;
           54   62     9           result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          14    16      17  any
          17    18      17  any
           7    19      29  Class java.lang.Throwable
          23    28      29  Class java.lang.Throwable
           7    19      39  any
          23    36      39  any
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  

  <V extends java.lang.Number, A> java.util.concurrent.Future<V> implRead(boolean, java.nio.ByteBuffer, java.nio.ByteBuffer[], long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<V, ? super A>);
    descriptor: (ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=6, locals=19, args_size=8
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean isScatteringRead
        start local 2 // java.nio.ByteBuffer dst
        start local 3 // java.nio.ByteBuffer[] dsts
        start local 4 // long timeout
        start local 6 // java.util.concurrent.TimeUnit unit
        start local 7 // java.lang.Object attachment
        start local 8 // java.nio.channels.CompletionHandler handler
         0: .line 496
            aconst_null
            astore 9 /* myGroupAndInvokeCount */
        start local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
         1: .line 497
            iconst_0
            istore 10 /* invokeDirect */
        start local 10 // boolean invokeDirect
         2: .line 498
            iconst_0
            istore 11 /* attemptRead */
        start local 11 // boolean attemptRead
         3: .line 499
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
            ifne 12
         4: .line 500
            aload 8 /* handler */
            ifnonnull 7
         5: .line 501
            iconst_1
            istore 11 /* attemptRead */
         6: .line 502
            goto 12
         7: .line 503
      StackMap locals: sun.nio.ch.Invoker$GroupAndInvokeCount int int
      StackMap stack:
            invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            astore 9 /* myGroupAndInvokeCount */
         8: .line 504
            aload 9 /* myGroupAndInvokeCount */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            invokestatic sun.nio.ch.Invoker.mayInvokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Lsun/nio/ch/AsynchronousChannelGroupImpl;)Z
            istore 10 /* invokeDirect */
         9: .line 506
            iload 10 /* invokeDirect */
            ifne 10
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            invokevirtual sun.nio.ch.Port.isFixedThreadPool:()Z
            ifeq 10
            iconst_0
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_1
      StackMap locals:
      StackMap stack: int
        11: istore 11 /* attemptRead */
        12: .line 510
      StackMap locals:
      StackMap stack:
            bipush -2
            istore 12 /* n */
        start local 12 // int n
        13: .line 511
            aconst_null
            astore 13 /* exc */
        start local 13 // java.lang.Throwable exc
        14: .line 512
            iconst_0
            istore 14 /* pending */
        start local 14 // boolean pending
        15: .line 515
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        16: .line 517
            iload 11 /* attemptRead */
            ifeq 21
        17: .line 518
            iload 1 /* isScatteringRead */
            ifeq 20
        18: .line 519
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 3 /* dsts */
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            l2i
            istore 12 /* n */
        19: .line 520
            goto 21
        20: .line 521
      StackMap locals: int java.lang.Throwable int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 2 /* dst */
            ldc -1
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 12 /* n */
        21: .line 525
      StackMap locals:
      StackMap stack:
            iload 12 /* n */
            bipush -2
            if_icmpne 64
        22: .line 526
            aconst_null
            astore 15 /* result */
        start local 15 // sun.nio.ch.PendingFuture result
        23: .line 527
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 16
            monitorenter
        24: .line 528
            aload 0 /* this */
            iload 1 /* isScatteringRead */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
        25: .line 529
            aload 0 /* this */
            aload 2 /* dst */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
        26: .line 530
            aload 0 /* this */
            aload 3 /* dsts */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
        27: .line 531
            aload 8 /* handler */
            ifnonnull 33
        28: .line 532
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
        29: .line 533
            new sun.nio.ch.PendingFuture
            dup
            aload 0 /* this */
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.READ:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
            invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/lang/Object;)V
            astore 15 /* result */
        30: .line 534
            aload 0 /* this */
            aload 15 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
        31: .line 535
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        32: .line 536
            goto 36
        33: .line 537
      StackMap locals: sun.nio.ch.PendingFuture java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 8 /* handler */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
        34: .line 538
            aload 0 /* this */
            aload 7 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        35: .line 539
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
        36: .line 541
      StackMap locals:
      StackMap stack:
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 38
        37: .line 542
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimeoutTask:Ljava/lang/Runnable;
            lload 4 /* timeout */
            aload 6 /* unit */
            invokevirtual sun.nio.ch.Port.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readTimer:Ljava/util/concurrent/Future;
        38: .line 544
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
        39: .line 545
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        40: .line 527
            aload 16
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 16
            monitorexit
        43: athrow
        44: .line 547
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* pending */
        45: .line 548
            aload 15 /* result */
            astore 18
        46: .line 557
            iload 14 /* pending */
            ifne 48
        47: .line 558
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        48: .line 559
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int sun.nio.ch.PendingFuture top top java.util.concurrent.Future
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        49: .line 548
            aload 18
            areturn
        end local 15 // sun.nio.ch.PendingFuture result
        50: .line 550
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
      StackMap stack: java.lang.Throwable
            astore 15 /* x */
        start local 15 // java.lang.Throwable x
        51: .line 551
            aload 15 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 53
        52: .line 552
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 15 /* x */
        53: .line 553
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 15 /* x */
            instanceof sun.net.ConnectionResetException
            ifeq 55
        54: .line 554
            new java.io.IOException
            dup
            aload 15 /* x */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            astore 15 /* x */
        55: .line 555
      StackMap locals:
      StackMap stack:
            aload 15 /* x */
            astore 13 /* exc */
        end local 15 // java.lang.Throwable x
        56: .line 557
            iload 14 /* pending */
            ifne 58
        57: .line 558
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        58: .line 559
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 67
        59: .line 556
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 17
        60: .line 557
            iload 14 /* pending */
            ifne 62
        61: .line 558
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        62: .line 559
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int top top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        63: .line 560
            aload 17
            athrow
        64: .line 557
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
      StackMap stack:
            iload 14 /* pending */
            ifne 66
        65: .line 558
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        66: .line 559
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        67: .line 562
      StackMap locals:
      StackMap stack:
            aload 13 /* exc */
            ifnull 68
            aconst_null
            goto 71
      StackMap locals:
      StackMap stack:
        68: iload 1 /* isScatteringRead */
            ifeq 70
        69: .line 563
            iload 12 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 71
      StackMap locals:
      StackMap stack:
        70: iload 12 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        71: .line 562
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 15 /* result */
        start local 15 // java.lang.Number result
        72: .line 566
            aload 8 /* handler */
            ifnull 78
        73: .line 567
            iload 10 /* invokeDirect */
            ifeq 76
        74: .line 568
            aload 9 /* myGroupAndInvokeCount */
            aload 8 /* handler */
            aload 7 /* attachment */
            aload 15 /* result */
            aload 13 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        75: .line 569
            goto 77
        76: .line 570
      StackMap locals: java.lang.Number
      StackMap stack:
            aload 0 /* this */
            aload 8 /* handler */
            aload 7 /* attachment */
            aload 15 /* result */
            aload 13 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        77: .line 572
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        78: .line 574
      StackMap locals:
      StackMap stack:
            aload 15 /* result */
            aload 13 /* exc */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        end local 15 // java.lang.Number result
        end local 14 // boolean pending
        end local 13 // java.lang.Throwable exc
        end local 12 // int n
        end local 11 // boolean attemptRead
        end local 10 // boolean invokeDirect
        end local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
        end local 8 // java.nio.channels.CompletionHandler handler
        end local 7 // java.lang.Object attachment
        end local 6 // java.util.concurrent.TimeUnit unit
        end local 4 // long timeout
        end local 3 // java.nio.ByteBuffer[] dsts
        end local 2 // java.nio.ByteBuffer dst
        end local 1 // boolean isScatteringRead
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   79     0                   this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   79     1       isScatteringRead  Z
            0   79     2                    dst  Ljava/nio/ByteBuffer;
            0   79     3                   dsts  [Ljava/nio/ByteBuffer;
            0   79     4                timeout  J
            0   79     6                   unit  Ljava/util/concurrent/TimeUnit;
            0   79     7             attachment  TA;
            0   79     8                handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            1   79     9  myGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            2   79    10           invokeDirect  Z
            3   79    11            attemptRead  Z
           13   79    12                      n  I
           14   79    13                    exc  Ljava/lang/Throwable;
           15   79    14                pending  Z
           23   50    15                 result  Lsun/nio/ch/PendingFuture<TV;TA;>;
           51   56    15                      x  Ljava/lang/Throwable;
           72   79    15                 result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          24    41      42  any
          42    43      42  any
          15    46      50  Class java.lang.Throwable
          15    46      59  any
          50    56      59  any
    Signature: <V:Ljava/lang/Number;A:Ljava/lang/Object;>(ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;TA;Ljava/nio/channels/CompletionHandler<TV;-TA;>;)Ljava/util/concurrent/Future<TV;>;
    MethodParameters:
                  Name  Flags
      isScatteringRead  
      dst               
      dsts              
      timeout           
      unit              
      attachment        
      handler           

  private void finishWrite(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean mayInvokeDirect
         0: .line 581
            iconst_m1
            istore 2 /* n */
        start local 2 // int n
         1: .line 582
            aconst_null
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
         2: .line 585
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
            istore 4 /* gathering */
        start local 4 // boolean gathering
         3: .line 586
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
            astore 5 /* handler */
        start local 5 // java.nio.channels.CompletionHandler handler
         4: .line 587
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
            astore 6 /* att */
        start local 6 // java.lang.Object att
         5: .line 588
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
            astore 7 /* future */
        start local 7 // sun.nio.ch.PendingFuture future
         6: .line 589
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimer:Ljava/util/concurrent/Future;
            astore 8 /* timer */
        start local 8 // java.util.concurrent.Future timer
         7: .line 592
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         8: .line 594
            iload 4 /* gathering */
            ifeq 11
         9: .line 595
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            l2i
            istore 2 /* n */
        10: .line 596
            goto 12
        11: .line 597
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
            ldc -1
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 2 /* n */
        12: .line 599
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 23
        13: .line 601
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 602
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        15: .line 601
            aload 9
            monitorexit
        16: goto 19
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future java.lang.Object
      StackMap stack: java.lang.Throwable
        17: aload 9
            monitorexit
        18: athrow
        19: .line 623
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 21
        20: .line 624
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        21: .line 625
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        22: .line 604
            return
        23: .line 608
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
        24: .line 609
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
        25: .line 610
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        26: .line 611
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
        27: .line 614
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        28: .line 616
            goto 42
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 9 /* x */
        start local 9 // java.lang.Throwable x
        30: .line 617
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        31: .line 618
            aload 9 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 33
        32: .line 619
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 9 /* x */
        33: .line 620
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 9 /* x */
            astore 3 /* exc */
        end local 9 // java.lang.Throwable x
        34: .line 623
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 36
        35: .line 624
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        36: .line 625
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 45
        37: .line 621
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        38: .line 623
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 40
        39: .line 624
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        40: .line 625
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        41: .line 626
            aload 10
            athrow
        42: .line 623
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 44
        43: .line 624
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        44: .line 625
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        45: .line 629
      StackMap locals:
      StackMap stack:
            aload 8 /* timer */
            ifnull 47
        46: .line 630
            aload 8 /* timer */
            iconst_0
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        47: .line 633
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            ifnull 48
            aconst_null
            goto 51
      StackMap locals:
      StackMap stack:
        48: iload 4 /* gathering */
            ifeq 50
        49: .line 634
            iload 2 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 51
      StackMap locals:
      StackMap stack:
        50: iload 2 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        51: .line 633
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 9 /* result */
        start local 9 // java.lang.Number result
        52: .line 637
            aload 5 /* handler */
            ifnonnull 55
        53: .line 638
            aload 7 /* future */
            aload 9 /* result */
            aload 3 /* exc */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        54: .line 639
            goto 59
        55: .line 640
      StackMap locals: java.lang.Number
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 58
        56: .line 641
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        57: .line 642
            goto 59
        58: .line 643
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        59: .line 646
      StackMap locals:
      StackMap stack:
            return
        end local 9 // java.lang.Number result
        end local 8 // java.util.concurrent.Future timer
        end local 7 // sun.nio.ch.PendingFuture future
        end local 6 // java.lang.Object att
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // boolean gathering
        end local 3 // java.lang.Throwable exc
        end local 2 // int n
        end local 1 // boolean mayInvokeDirect
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   60     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   60     1  mayInvokeDirect  Z
            1   60     2                n  I
            2   60     3              exc  Ljava/lang/Throwable;
            3   60     4        gathering  Z
            4   60     5          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
            5   60     6              att  Ljava/lang/Object;
            6   60     7           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
            7   60     8            timer  Ljava/util/concurrent/Future<*>;
           30   34     9                x  Ljava/lang/Throwable;
           52   60     9           result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          14    16      17  any
          17    18      17  any
           7    19      29  Class java.lang.Throwable
          23    28      29  Class java.lang.Throwable
           7    19      37  any
          23    34      37  any
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  

  <V extends java.lang.Number, A> java.util.concurrent.Future<V> implWrite(boolean, java.nio.ByteBuffer, java.nio.ByteBuffer[], long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<V, ? super A>);
    descriptor: (ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=6, locals=19, args_size=8
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean isGatheringWrite
        start local 2 // java.nio.ByteBuffer src
        start local 3 // java.nio.ByteBuffer[] srcs
        start local 4 // long timeout
        start local 6 // java.util.concurrent.TimeUnit unit
        start local 7 // java.lang.Object attachment
        start local 8 // java.nio.channels.CompletionHandler handler
         0: .line 691
            invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
         1: .line 690
            astore 9 /* myGroupAndInvokeCount */
        start local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
         2: .line 692
            aload 9 /* myGroupAndInvokeCount */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            invokestatic sun.nio.ch.Invoker.mayInvokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Lsun/nio/ch/AsynchronousChannelGroupImpl;)Z
            istore 10 /* invokeDirect */
        start local 10 // boolean invokeDirect
         3: .line 693
            aload 8 /* handler */
            ifnull 6
            iload 10 /* invokeDirect */
            ifne 6
         4: .line 694
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            invokevirtual sun.nio.ch.Port.isFixedThreadPool:()Z
            ifeq 6
         5: .line 693
            iconst_0
            goto 7
      StackMap locals: sun.nio.ch.Invoker$GroupAndInvokeCount int
      StackMap stack:
         6: iconst_1
      StackMap locals:
      StackMap stack: int
         7: istore 11 /* attemptWrite */
        start local 11 // boolean attemptWrite
         8: .line 696
            bipush -2
            istore 12 /* n */
        start local 12 // int n
         9: .line 697
            aconst_null
            astore 13 /* exc */
        start local 13 // java.lang.Throwable exc
        10: .line 698
            iconst_0
            istore 14 /* pending */
        start local 14 // boolean pending
        11: .line 701
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        12: .line 703
            iload 11 /* attemptWrite */
            ifeq 17
        13: .line 704
            iload 1 /* isGatheringWrite */
            ifeq 16
        14: .line 705
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 3 /* srcs */
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            l2i
            istore 12 /* n */
        15: .line 706
            goto 17
        16: .line 707
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 2 /* src */
            ldc -1
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
            istore 12 /* n */
        17: .line 711
      StackMap locals:
      StackMap stack:
            iload 12 /* n */
            bipush -2
            if_icmpne 58
        18: .line 712
            aconst_null
            astore 15 /* result */
        start local 15 // sun.nio.ch.PendingFuture result
        19: .line 713
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 16
            monitorenter
        20: .line 714
            aload 0 /* this */
            iload 1 /* isGatheringWrite */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
        21: .line 715
            aload 0 /* this */
            aload 2 /* src */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
        22: .line 716
            aload 0 /* this */
            aload 3 /* srcs */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
        23: .line 717
            aload 8 /* handler */
            ifnonnull 29
        24: .line 718
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
        25: .line 719
            new sun.nio.ch.PendingFuture
            dup
            aload 0 /* this */
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType.WRITE:Lsun/nio/ch/UnixAsynchronousSocketChannelImpl$OpType;
            invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;Ljava/lang/Object;)V
            astore 15 /* result */
        26: .line 720
            aload 0 /* this */
            aload 15 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
        27: .line 721
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        28: .line 722
            goto 32
        29: .line 723
      StackMap locals: sun.nio.ch.PendingFuture java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 8 /* handler */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
        30: .line 724
            aload 0 /* this */
            aload 7 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        31: .line 725
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
        32: .line 727
      StackMap locals:
      StackMap stack:
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 34
        33: .line 728
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimeoutTask:Ljava/lang/Runnable;
            lload 4 /* timeout */
            aload 6 /* unit */
            invokevirtual sun.nio.ch.Port.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeTimer:Ljava/util/concurrent/Future;
        34: .line 730
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        35: .line 731
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        36: .line 713
            aload 16
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 16
            monitorexit
        39: athrow
        40: .line 733
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* pending */
        41: .line 734
            aload 15 /* result */
            astore 18
        42: .line 741
            iload 14 /* pending */
            ifne 44
        43: .line 742
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        44: .line 743
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int sun.nio.ch.PendingFuture top top java.util.concurrent.Future
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        45: .line 734
            aload 18
            areturn
        end local 15 // sun.nio.ch.PendingFuture result
        46: .line 736
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
      StackMap stack: java.lang.Throwable
            astore 15 /* x */
        start local 15 // java.lang.Throwable x
        47: .line 737
            aload 15 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 49
        48: .line 738
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 15 /* x */
        49: .line 739
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 15 /* x */
            astore 13 /* exc */
        end local 15 // java.lang.Throwable x
        50: .line 741
            iload 14 /* pending */
            ifne 52
        51: .line 742
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        52: .line 743
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 61
        53: .line 740
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 17
        54: .line 741
            iload 14 /* pending */
            ifne 56
        55: .line 742
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        56: .line 743
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int top top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        57: .line 744
            aload 17
            athrow
        58: .line 741
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.nio.ByteBuffer java.nio.ByteBuffer[] long java.util.concurrent.TimeUnit java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.Invoker$GroupAndInvokeCount int int int java.lang.Throwable int
      StackMap stack:
            iload 14 /* pending */
            ifne 60
        59: .line 742
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        60: .line 743
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        61: .line 746
      StackMap locals:
      StackMap stack:
            aload 13 /* exc */
            ifnull 62
            aconst_null
            goto 65
      StackMap locals:
      StackMap stack:
        62: iload 1 /* isGatheringWrite */
            ifeq 64
        63: .line 747
            iload 12 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 65
      StackMap locals:
      StackMap stack:
        64: iload 12 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        65: .line 746
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 15 /* result */
        start local 15 // java.lang.Number result
        66: .line 750
            aload 8 /* handler */
            ifnull 72
        67: .line 751
            iload 10 /* invokeDirect */
            ifeq 70
        68: .line 752
            aload 9 /* myGroupAndInvokeCount */
            aload 8 /* handler */
            aload 7 /* attachment */
            aload 15 /* result */
            aload 13 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeDirect:(Lsun/nio/ch/Invoker$GroupAndInvokeCount;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        69: .line 753
            goto 71
        70: .line 754
      StackMap locals: java.lang.Number
      StackMap stack:
            aload 0 /* this */
            aload 8 /* handler */
            aload 7 /* attachment */
            aload 15 /* result */
            aload 13 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        71: .line 756
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        72: .line 758
      StackMap locals:
      StackMap stack:
            aload 15 /* result */
            aload 13 /* exc */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        end local 15 // java.lang.Number result
        end local 14 // boolean pending
        end local 13 // java.lang.Throwable exc
        end local 12 // int n
        end local 11 // boolean attemptWrite
        end local 10 // boolean invokeDirect
        end local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
        end local 8 // java.nio.channels.CompletionHandler handler
        end local 7 // java.lang.Object attachment
        end local 6 // java.util.concurrent.TimeUnit unit
        end local 4 // long timeout
        end local 3 // java.nio.ByteBuffer[] srcs
        end local 2 // java.nio.ByteBuffer src
        end local 1 // boolean isGatheringWrite
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   73     0                   this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   73     1       isGatheringWrite  Z
            0   73     2                    src  Ljava/nio/ByteBuffer;
            0   73     3                   srcs  [Ljava/nio/ByteBuffer;
            0   73     4                timeout  J
            0   73     6                   unit  Ljava/util/concurrent/TimeUnit;
            0   73     7             attachment  TA;
            0   73     8                handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            2   73     9  myGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            3   73    10           invokeDirect  Z
            8   73    11           attemptWrite  Z
            9   73    12                      n  I
           10   73    13                    exc  Ljava/lang/Throwable;
           11   73    14                pending  Z
           19   46    15                 result  Lsun/nio/ch/PendingFuture<TV;TA;>;
           47   50    15                      x  Ljava/lang/Throwable;
           66   73    15                 result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          20    37      38  any
          38    39      38  any
          11    42      46  Class java.lang.Throwable
          11    42      53  any
          46    50      53  any
    Signature: <V:Ljava/lang/Number;A:Ljava/lang/Object;>(ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;TA;Ljava/nio/channels/CompletionHandler<TV;-TA;>;)Ljava/util/concurrent/Future<TV;>;
    MethodParameters:
                  Name  Flags
      isGatheringWrite  
      src               
      srcs              
      timeout           
      unit              
      attachment        
      handler           

  private static native void checkConnect(int);
    descriptor: (I)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fdVal  
}
SourceFile: "UnixAsynchronousSocketChannelImpl.java"
NestMembers:
  sun.nio.ch.UnixAsynchronousSocketChannelImpl$1  sun.nio.ch.UnixAsynchronousSocketChannelImpl$2  sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType
InnerClasses:
  GroupAndInvokeCount = sun.nio.ch.Invoker$GroupAndInvokeCount of sun.nio.ch.Invoker
  abstract PollableChannel = sun.nio.ch.Port$PollableChannel of sun.nio.ch.Port
  sun.nio.ch.UnixAsynchronousSocketChannelImpl$1
  sun.nio.ch.UnixAsynchronousSocketChannelImpl$2
  private final OpType = sun.nio.ch.UnixAsynchronousSocketChannelImpl$OpType of sun.nio.ch.UnixAsynchronousSocketChannelImpl