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 41
            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 44
            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 50
            ldc "sun.nio.ch.disableSynchronousRead"
            ldc "false"
         5: .line 49
            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 51
            aload 0 /* propValue */
            invokevirtual java.lang.String.length:()I
            ifne 8
         7: .line 52
            iconst_1
            goto 9
      StackMap locals: java.lang.String
      StackMap stack:
         8: aload 0 /* propValue */
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
         9: .line 51
      StackMap locals:
      StackMap stack: int
            putstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
        end local 0 // java.lang.String propValue
        10: .line 750
            invokestatic sun.nio.ch.IOUtil.load:()V
        11: .line 751
            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 95
            aload 0 /* this */
            aload 1 /* port */
            invokespecial sun.nio.ch.AsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
         1: .line 60
            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 436
            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 631
            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 99
            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 100
            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 101
            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 102
            aload 2 /* x */
            athrow
        end local 2 // java.io.IOException x
         9: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* port */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
        10: .line 106
            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 109
            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 110
            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 118
            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 60
            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 436
            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 631
            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 120
            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 121
            aload 2 /* fd */
            iconst_0
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         6: .line 124
            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 125
            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 128
            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 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* port */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
        11: .line 132
            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 136
            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 141
            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 142
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* events */
        start local 1 // int events
         2: .line 143
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
            ifeq 4
         3: .line 144
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLIN:S
            ior
            istore 1 /* events */
         4: .line 145
      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 146
      StackMap locals:
      StackMap stack:
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLOUT:S
            ior
            istore 1 /* events */
         6: .line 147
      StackMap locals:
      StackMap stack:
            iload 1 /* events */
            ifeq 8
         7: .line 148
            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 149
      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 153
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 154
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
         2: .line 153
            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 156
      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 163
            iconst_0
            istore 4 /* finishRead */
        start local 4 // boolean finishRead
         1: .line 164
            iconst_0
            istore 5 /* finishWrite */
        start local 5 // boolean finishWrite
         2: .line 165
            iconst_0
            istore 6 /* finishConnect */
        start local 6 // boolean finishConnect
         3: .line 168
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
         4: .line 169
            iload 2 /* readable */
            ifeq 7
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
            ifeq 7
         5: .line 170
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
         6: .line 171
            iconst_1
            istore 4 /* finishRead */
         7: .line 173
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int int int int int java.lang.Object
      StackMap stack:
            iload 3 /* writable */
            ifeq 15
         8: .line 174
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
            ifeq 12
         9: .line 175
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        10: .line 176
            iconst_1
            istore 5 /* finishWrite */
        11: .line 177
            goto 15
      StackMap locals:
      StackMap stack:
        12: aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
            ifeq 15
        13: .line 178
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
        14: .line 179
            iconst_1
            istore 6 /* finishConnect */
        15: .line 168
      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 187
      StackMap locals:
      StackMap stack:
            iload 4 /* finishRead */
            ifeq 24
        20: .line 188
            iload 5 /* finishWrite */
            ifeq 22
        21: .line 189
            aload 0 /* this */
            iconst_0
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
        22: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead:(Z)V
        23: .line 191
            return
        24: .line 193
      StackMap locals:
      StackMap stack:
            iload 5 /* finishWrite */
            ifeq 26
        25: .line 194
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
        26: .line 196
      StackMap locals:
      StackMap stack:
            iload 6 /* finishConnect */
            ifeq 28
        27: .line 197
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect:(Z)V
        28: .line 199
      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 206
            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 207
            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 208
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLERR:S
            getstatic sun.nio.ch.Net.POLLHUP:S
            ior
            iand
            ifle 9
         7: .line 209
            iconst_1
            istore 3 /* readable */
         8: .line 210
            iconst_1
            istore 4 /* writable */
         9: .line 212
      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 213
            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 218
            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 221
            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 224
            aload 0 /* this */
            iconst_0
            iconst_1
            iconst_1
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish:(ZZZ)V
         3: .line 225
            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 229
            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 230
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killConnect:()V
         2: .line 231
      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 232
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killReading:()V
         4: .line 233
      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 234
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killWriting:()V
         6: .line 235
      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 240
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 241
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
         2: .line 242
            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 243
            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 240
            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 245
      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 248
            aconst_null
            astore 2 /* e */
        start local 2 // java.lang.Throwable e
         1: .line 250
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         2: .line 251
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            invokestatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect:(I)V
         3: .line 252
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
         4: .line 253
            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 254
            aload 3 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 8
         7: .line 255
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 3 /* x */
         8: .line 256
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3 /* x */
            astore 2 /* e */
        end local 3 // java.lang.Throwable x
         9: .line 258
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 14
        10: .line 257
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 4
        11: .line 258
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        12: .line 259
            aload 4
            athrow
        13: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        14: .line 260
      StackMap locals:
      StackMap stack:
            aload 2 /* e */
            ifnull 19
        15: .line 263
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
        16: .line 264
            goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 3 /* suppressed */
        start local 3 // java.lang.Throwable suppressed
        18: .line 265
            aload 2 /* e */
            aload 3 /* suppressed */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable suppressed
        19: .line 270
      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
        20: .line 271
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
            astore 4 /* att */
        start local 4 // java.lang.Object att
        21: .line 272
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
            astore 5 /* future */
        start local 5 // sun.nio.ch.PendingFuture future
        22: .line 273
            aload 3 /* handler */
            ifnonnull 25
        23: .line 274
            aload 5 /* future */
            aconst_null
            aload 2 /* e */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        24: .line 275
            goto 29
        25: .line 276
      StackMap locals: java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 28
        26: .line 277
            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
        27: .line 278
            goto 29
        28: .line 279
      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
        29: .line 282
      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   30     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   30     1  mayInvokeDirect  Z
            1   30     2                e  Ljava/lang/Throwable;
            6    9     3                x  Ljava/lang/Throwable;
           18   19     3       suppressed  Ljava/lang/Throwable;
           20   30     3          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;
           21   30     4              att  Ljava/lang/Object;
           22   30     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
          15    16      17  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 290
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.isOpen:()Z
            ifne 6
         1: .line 291
            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 292
            aload 3 /* handler */
            ifnonnull 4
         3: .line 293
            aload 4 /* e */
            invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
         4: .line 295
      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 296
            aconst_null
            areturn
        end local 4 // java.lang.Throwable e
         6: .line 300
      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 303
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* sm */
        start local 5 // java.lang.SecurityManager sm
         8: .line 304
            aload 5 /* sm */
            ifnull 10
         9: .line 305
            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 309
      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 310
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
            iconst_2
            if_icmpne 13
        12: .line 311
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            athrow
        13: .line 312
      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 313
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
        15: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
        16: .line 315
            aload 0 /* this */
            aload 1 /* remote */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
        17: .line 316
            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 309
            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 319
      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 321
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        26: .line 323
            iload 6 /* notifyBeforeTcpConnect */
            ifeq 28
        27: .line 324
            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 325
      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 326
            iload 8 /* n */
            bipush -2
            if_icmpne 47
        30: .line 328
            aconst_null
            astore 9 /* result */
        start local 9 // sun.nio.ch.PendingFuture result
        31: .line 329
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 10
            monitorenter
        32: .line 330
            aload 3 /* handler */
            ifnonnull 36
        33: .line 331
            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 332
            aload 0 /* this */
            aload 9 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
        35: .line 333
            goto 38
        36: .line 334
      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 335
            aload 0 /* this */
            aload 2 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
        38: .line 337
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
        39: .line 338
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        40: .line 329
            aload 10
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 10
            monitorexit
        43: athrow
        44: .line 340
      StackMap locals:
      StackMap stack:
            aload 9 /* result */
            astore 12
        45: .line 348
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        46: .line 340
            aload 12
            areturn
        end local 9 // sun.nio.ch.PendingFuture result
        47: .line 342
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
        end local 8 // int n
        48: .line 343
            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 344
            aload 8 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 52
        51: .line 345
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 8 /* x */
        52: .line 346
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 8 /* x */
            astore 7 /* e */
        end local 8 // java.lang.Throwable x
        53: .line 348
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 58
        54: .line 347
      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 348
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        56: .line 349
            aload 11
            athrow
        57: .line 348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        58: .line 352
      StackMap locals:
      StackMap stack:
            aload 7 /* e */
            ifnull 63
        59: .line 354
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
        60: .line 355
            goto 63
      StackMap locals:
      StackMap stack: java.lang.Throwable
        61: astore 8 /* suppressed */
        start local 8 // java.lang.Throwable suppressed
        62: .line 356
            aload 7 /* e */
            aload 8 /* suppressed */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
        end local 8 // java.lang.Throwable suppressed
        63: .line 359
      StackMap locals:
      StackMap stack:
            aload 3 /* handler */
            ifnonnull 65
        64: .line 360
            aconst_null
            aload 7 /* e */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        65: .line 362
      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
        66: .line 363
            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   67     0                    this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   67     1                  remote  Ljava/net/SocketAddress;
            0   67     2              attachment  TA;
            0   67     3                 handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;
            2    6     4                       e  Ljava/lang/Throwable;
            7   67     4                     isa  Ljava/net/InetSocketAddress;
            8   67     5                      sm  Ljava/lang/SecurityManager;
           20   22     6  notifyBeforeTcpConnect  Z
           24   67     6  notifyBeforeTcpConnect  Z
           25   67     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;
           62   63     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
          59    60      61  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 370
            iconst_m1
            istore 2 /* n */
        start local 2 // int n
         1: .line 371
            aconst_null
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
         2: .line 374
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
            istore 4 /* scattering */
        start local 4 // boolean scattering
         3: .line 375
            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 376
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
            astore 6 /* att */
        start local 6 // java.lang.Object att
         5: .line 377
            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 378
            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 381
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         8: .line 383
            iload 4 /* scattering */
            ifeq 11
         9: .line 384
            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 385
            goto 12
        11: .line 386
      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 388
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 23
        13: .line 390
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 391
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
        15: .line 390
            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 411
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 21
        20: .line 412
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        21: .line 413
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        22: .line 393
            return
        23: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
        24: .line 398
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
        25: .line 399
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        26: .line 402
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        27: .line 404
            goto 41
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 9 /* x */
        start local 9 // java.lang.Throwable x
        29: .line 405
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        30: .line 406
            aload 9 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 32
        31: .line 407
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 9 /* x */
        32: .line 408
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 9 /* x */
            astore 3 /* exc */
        end local 9 // java.lang.Throwable x
        33: .line 411
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 35
        34: .line 412
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        35: .line 413
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 44
        36: .line 409
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        37: .line 411
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 39
        38: .line 412
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        39: .line 413
      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
        40: .line 414
            aload 10
            athrow
        41: .line 411
      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 43
        42: .line 412
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        43: .line 413
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        44: .line 417
      StackMap locals:
      StackMap stack:
            aload 8 /* timeout */
            ifnull 46
        45: .line 418
            aload 8 /* timeout */
            iconst_0
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        46: .line 421
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            ifnull 47
            aconst_null
            goto 50
      StackMap locals:
      StackMap stack:
        47: iload 4 /* scattering */
            ifeq 49
        48: .line 422
            iload 2 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 50
      StackMap locals:
      StackMap stack:
        49: iload 2 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        50: .line 421
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 9 /* result */
        start local 9 // java.lang.Number result
        51: .line 425
            aload 5 /* handler */
            ifnonnull 54
        52: .line 426
            aload 7 /* future */
            aload 9 /* result */
            aload 3 /* exc */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        53: .line 427
            goto 58
        54: .line 428
      StackMap locals: java.lang.Number
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 57
        55: .line 429
            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
        56: .line 430
            goto 58
        57: .line 431
      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
        58: .line 434
      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   59     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   59     1  mayInvokeDirect  Z
            1   59     2                n  I
            2   59     3              exc  Ljava/lang/Throwable;
            3   59     4       scattering  Z
            4   59     5          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
            5   59     6              att  Ljava/lang/Object;
            6   59     7           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
            7   59     8          timeout  Ljava/util/concurrent/Future<*>;
           29   33     9                x  Ljava/lang/Throwable;
           51   59     9           result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          14    16      17  any
          17    18      17  any
           7    19      28  Class java.lang.Throwable
          23    27      28  Class java.lang.Throwable
           7    19      36  any
          23    33      36  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 482
            aconst_null
            astore 9 /* myGroupAndInvokeCount */
        start local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
         1: .line 483
            iconst_0
            istore 10 /* invokeDirect */
        start local 10 // boolean invokeDirect
         2: .line 484
            iconst_0
            istore 11 /* attemptRead */
        start local 11 // boolean attemptRead
         3: .line 485
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
            ifne 12
         4: .line 486
            aload 8 /* handler */
            ifnonnull 7
         5: .line 487
            iconst_1
            istore 11 /* attemptRead */
         6: .line 488
            goto 12
         7: .line 489
      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 490
            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 492
            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 496
      StackMap locals:
      StackMap stack:
            bipush -2
            istore 12 /* n */
        start local 12 // int n
        13: .line 497
            aconst_null
            astore 13 /* exc */
        start local 13 // java.lang.Throwable exc
        14: .line 498
            iconst_0
            istore 14 /* pending */
        start local 14 // boolean pending
        15: .line 501
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        16: .line 503
            iload 11 /* attemptRead */
            ifeq 21
        17: .line 504
            iload 1 /* isScatteringRead */
            ifeq 20
        18: .line 505
            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 506
            goto 21
        20: .line 507
      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 511
      StackMap locals:
      StackMap stack:
            iload 12 /* n */
            bipush -2
            if_icmpne 62
        22: .line 512
            aconst_null
            astore 15 /* result */
        start local 15 // sun.nio.ch.PendingFuture result
        23: .line 513
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 16
            monitorenter
        24: .line 514
            aload 0 /* this */
            iload 1 /* isScatteringRead */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
        25: .line 515
            aload 0 /* this */
            aload 2 /* dst */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
        26: .line 516
            aload 0 /* this */
            aload 3 /* dsts */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
        27: .line 517
            aload 8 /* handler */
            ifnonnull 33
        28: .line 518
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
        29: .line 519
            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 520
            aload 0 /* this */
            aload 15 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
        31: .line 521
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        32: .line 522
            goto 36
        33: .line 523
      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 524
            aload 0 /* this */
            aload 7 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        35: .line 525
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
        36: .line 527
      StackMap locals:
      StackMap stack:
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 38
        37: .line 528
            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 530
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
        39: .line 531
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        40: .line 513
            aload 16
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 16
            monitorexit
        43: athrow
        44: .line 533
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* pending */
        45: .line 534
            aload 15 /* result */
            astore 18
        46: .line 541
            iload 14 /* pending */
            ifne 48
        47: .line 542
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        48: .line 543
      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 534
            aload 18
            areturn
        end local 15 // sun.nio.ch.PendingFuture result
        50: .line 536
      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 537
            aload 15 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 53
        52: .line 538
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 15 /* x */
        53: .line 539
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 15 /* x */
            astore 13 /* exc */
        end local 15 // java.lang.Throwable x
        54: .line 541
            iload 14 /* pending */
            ifne 56
        55: .line 542
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        56: .line 543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 65
        57: .line 540
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 17
        58: .line 541
            iload 14 /* pending */
            ifne 60
        59: .line 542
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        60: .line 543
      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
        61: .line 544
            aload 17
            athrow
        62: .line 541
      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 64
        63: .line 542
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        64: .line 543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        65: .line 546
      StackMap locals:
      StackMap stack:
            aload 13 /* exc */
            ifnull 66
            aconst_null
            goto 69
      StackMap locals:
      StackMap stack:
        66: iload 1 /* isScatteringRead */
            ifeq 68
        67: .line 547
            iload 12 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 69
      StackMap locals:
      StackMap stack:
        68: iload 12 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        69: .line 546
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 15 /* result */
        start local 15 // java.lang.Number result
        70: .line 550
            aload 8 /* handler */
            ifnull 76
        71: .line 551
            iload 10 /* invokeDirect */
            ifeq 74
        72: .line 552
            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
        73: .line 553
            goto 75
        74: .line 554
      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
        75: .line 556
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        76: .line 558
      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   77     0                   this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   77     1       isScatteringRead  Z
            0   77     2                    dst  Ljava/nio/ByteBuffer;
            0   77     3                   dsts  [Ljava/nio/ByteBuffer;
            0   77     4                timeout  J
            0   77     6                   unit  Ljava/util/concurrent/TimeUnit;
            0   77     7             attachment  TA;
            0   77     8                handler  Ljava/nio/channels/CompletionHandler<TV;-TA;>;
            1   77     9  myGroupAndInvokeCount  Lsun/nio/ch/Invoker$GroupAndInvokeCount;
            2   77    10           invokeDirect  Z
            3   77    11            attemptRead  Z
           13   77    12                      n  I
           14   77    13                    exc  Ljava/lang/Throwable;
           15   77    14                pending  Z
           23   50    15                 result  Lsun/nio/ch/PendingFuture<TV;TA;>;
           51   54    15                      x  Ljava/lang/Throwable;
           70   77    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      57  any
          50    54      57  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 565
            iconst_m1
            istore 2 /* n */
        start local 2 // int n
         1: .line 566
            aconst_null
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
         2: .line 569
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
            istore 4 /* gathering */
        start local 4 // boolean gathering
         3: .line 570
            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 571
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
            astore 6 /* att */
        start local 6 // java.lang.Object att
         5: .line 572
            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 573
            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 576
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         8: .line 578
            iload 4 /* gathering */
            ifeq 11
         9: .line 579
            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 580
            goto 12
        11: .line 581
      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 583
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 23
        13: .line 585
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 586
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        15: .line 585
            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 606
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 21
        20: .line 607
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        21: .line 608
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        22: .line 588
            return
        23: .line 592
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
        24: .line 593
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
        25: .line 594
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        26: .line 597
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        27: .line 599
            goto 41
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 9 /* x */
        start local 9 // java.lang.Throwable x
        29: .line 600
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        30: .line 601
            aload 9 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 32
        31: .line 602
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 9 /* x */
        32: .line 603
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 9 /* x */
            astore 3 /* exc */
        end local 9 // java.lang.Throwable x
        33: .line 606
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 35
        34: .line 607
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        35: .line 608
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 44
        36: .line 604
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        37: .line 606
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 39
        38: .line 607
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        39: .line 608
      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
        40: .line 609
            aload 10
            athrow
        41: .line 606
      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 43
        42: .line 607
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        43: .line 608
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        44: .line 612
      StackMap locals:
      StackMap stack:
            aload 8 /* timer */
            ifnull 46
        45: .line 613
            aload 8 /* timer */
            iconst_0
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        46: .line 616
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            ifnull 47
            aconst_null
            goto 50
      StackMap locals:
      StackMap stack:
        47: iload 4 /* gathering */
            ifeq 49
        48: .line 617
            iload 2 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 50
      StackMap locals:
      StackMap stack:
        49: iload 2 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        50: .line 616
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 9 /* result */
        start local 9 // java.lang.Number result
        51: .line 620
            aload 5 /* handler */
            ifnonnull 54
        52: .line 621
            aload 7 /* future */
            aload 9 /* result */
            aload 3 /* exc */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        53: .line 622
            goto 58
        54: .line 623
      StackMap locals: java.lang.Number
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 57
        55: .line 624
            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
        56: .line 625
            goto 58
        57: .line 626
      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
        58: .line 629
      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   59     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   59     1  mayInvokeDirect  Z
            1   59     2                n  I
            2   59     3              exc  Ljava/lang/Throwable;
            3   59     4        gathering  Z
            4   59     5          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
            5   59     6              att  Ljava/lang/Object;
            6   59     7           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
            7   59     8            timer  Ljava/util/concurrent/Future<*>;
           29   33     9                x  Ljava/lang/Throwable;
           51   59     9           result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          14    16      17  any
          17    18      17  any
           7    19      28  Class java.lang.Throwable
          23    27      28  Class java.lang.Throwable
           7    19      36  any
          23    33      36  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 674
            invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
         1: .line 673
            astore 9 /* myGroupAndInvokeCount */
        start local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
         2: .line 675
            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 676
            aload 8 /* handler */
            ifnull 6
            iload 10 /* invokeDirect */
            ifne 6
         4: .line 677
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            invokevirtual sun.nio.ch.Port.isFixedThreadPool:()Z
            ifeq 6
         5: .line 676
            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 679
            bipush -2
            istore 12 /* n */
        start local 12 // int n
         9: .line 680
            aconst_null
            astore 13 /* exc */
        start local 13 // java.lang.Throwable exc
        10: .line 681
            iconst_0
            istore 14 /* pending */
        start local 14 // boolean pending
        11: .line 684
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        12: .line 686
            iload 11 /* attemptWrite */
            ifeq 17
        13: .line 687
            iload 1 /* isGatheringWrite */
            ifeq 16
        14: .line 688
            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 689
            goto 17
        16: .line 690
      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 694
      StackMap locals:
      StackMap stack:
            iload 12 /* n */
            bipush -2
            if_icmpne 58
        18: .line 695
            aconst_null
            astore 15 /* result */
        start local 15 // sun.nio.ch.PendingFuture result
        19: .line 696
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 16
            monitorenter
        20: .line 697
            aload 0 /* this */
            iload 1 /* isGatheringWrite */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
        21: .line 698
            aload 0 /* this */
            aload 2 /* src */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
        22: .line 699
            aload 0 /* this */
            aload 3 /* srcs */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
        23: .line 700
            aload 8 /* handler */
            ifnonnull 29
        24: .line 701
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
        25: .line 702
            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 703
            aload 0 /* this */
            aload 15 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
        27: .line 704
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        28: .line 705
            goto 32
        29: .line 706
      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 707
            aload 0 /* this */
            aload 7 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        31: .line 708
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
        32: .line 710
      StackMap locals:
      StackMap stack:
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 34
        33: .line 711
            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 713
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        35: .line 714
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        36: .line 696
            aload 16
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 16
            monitorexit
        39: athrow
        40: .line 716
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* pending */
        41: .line 717
            aload 15 /* result */
            astore 18
        42: .line 724
            iload 14 /* pending */
            ifne 44
        43: .line 725
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        44: .line 726
      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 717
            aload 18
            areturn
        end local 15 // sun.nio.ch.PendingFuture result
        46: .line 719
      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 720
            aload 15 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 49
        48: .line 721
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 15 /* x */
        49: .line 722
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 15 /* x */
            astore 13 /* exc */
        end local 15 // java.lang.Throwable x
        50: .line 724
            iload 14 /* pending */
            ifne 52
        51: .line 725
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        52: .line 726
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 61
        53: .line 723
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 17
        54: .line 724
            iload 14 /* pending */
            ifne 56
        55: .line 725
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        56: .line 726
      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 727
            aload 17
            athrow
        58: .line 724
      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 725
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        60: .line 726
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        61: .line 729
      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 730
            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 729
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 15 /* result */
        start local 15 // java.lang.Number result
        66: .line 733
            aload 8 /* handler */
            ifnull 72
        67: .line 734
            iload 10 /* invokeDirect */
            ifeq 70
        68: .line 735
            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 736
            goto 71
        70: .line 737
      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 739
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        72: .line 741
      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