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 42
            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 45
            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 51
            ldc "sun.nio.ch.disableSynchronousRead"
            ldc "false"
         5: .line 50
            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 52
            aload 0 /* propValue */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 8
         7: .line 53
            iconst_1
            goto 9
      StackMap locals: java.lang.String
      StackMap stack:
         8: aload 0 /* propValue */
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
         9: .line 52
      StackMap locals:
      StackMap stack: int
            putstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
        end local 0 // java.lang.String propValue
        10: .line 761
            invokestatic sun.nio.ch.IOUtil.load:()V
        11: .line 762
            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 96
            aload 0 /* this */
            aload 1 /* port */
            invokespecial sun.nio.ch.AsynchronousSocketChannelImpl.<init>:(Lsun/nio/ch/AsynchronousChannelGroupImpl;)V
         1: .line 61
            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 446
            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 642
            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 100
            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 101
            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 102
            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 103
            aload 2 /* x */
            athrow
        end local 2 // java.io.IOException x
         9: .line 106
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* port */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
        10: .line 107
            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 110
            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 111
            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 119
            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 61
            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 446
            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 642
            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 121
            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 122
            aload 2 /* fd */
            iconst_0
            invokestatic sun.nio.ch.IOUtil.configureBlocking:(Ljava/io/FileDescriptor;Z)V
         6: .line 125
            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 126
            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 129
            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 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* port */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
        11: .line 133
            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 137
            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 142
            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 143
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* events */
        start local 1 // int events
         2: .line 144
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
            ifeq 4
         3: .line 145
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLIN:S
            ior
            istore 1 /* events */
         4: .line 146
      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 147
      StackMap locals:
      StackMap stack:
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLOUT:S
            ior
            istore 1 /* events */
         6: .line 148
      StackMap locals:
      StackMap stack:
            iload 1 /* events */
            ifeq 8
         7: .line 149
            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 150
      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 154
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 155
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
         2: .line 154
            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 157
      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 164
            iconst_0
            istore 4 /* finishRead */
        start local 4 // boolean finishRead
         1: .line 165
            iconst_0
            istore 5 /* finishWrite */
        start local 5 // boolean finishWrite
         2: .line 166
            iconst_0
            istore 6 /* finishConnect */
        start local 6 // boolean finishConnect
         3: .line 169
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 7
            monitorenter
         4: .line 170
            iload 2 /* readable */
            ifeq 7
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
            ifeq 7
         5: .line 171
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
         6: .line 172
            iconst_1
            istore 4 /* finishRead */
         7: .line 174
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int int int int int java.lang.Object
      StackMap stack:
            iload 3 /* writable */
            ifeq 15
         8: .line 175
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
            ifeq 12
         9: .line 176
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        10: .line 177
            iconst_1
            istore 5 /* finishWrite */
        11: .line 178
            goto 15
      StackMap locals:
      StackMap stack:
        12: aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
            ifeq 15
        13: .line 179
            aload 0 /* this */
            iconst_0
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
        14: .line 180
            iconst_1
            istore 6 /* finishConnect */
        15: .line 169
      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 188
      StackMap locals:
      StackMap stack:
            iload 4 /* finishRead */
            ifeq 24
        20: .line 189
            iload 5 /* finishWrite */
            ifeq 22
        21: .line 190
            aload 0 /* this */
            iconst_0
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
        22: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead:(Z)V
        23: .line 192
            return
        24: .line 194
      StackMap locals:
      StackMap stack:
            iload 5 /* finishWrite */
            ifeq 26
        25: .line 195
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishWrite:(Z)V
        26: .line 197
      StackMap locals:
      StackMap stack:
            iload 6 /* finishConnect */
            ifeq 28
        27: .line 198
            aload 0 /* this */
            iload 1 /* mayInvokeDirect */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishConnect:(Z)V
        28: .line 200
      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 207
            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 208
            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 209
            iload 1 /* events */
            getstatic sun.nio.ch.Net.POLLERR:S
            getstatic sun.nio.ch.Net.POLLHUP:S
            ior
            iand
            ifle 9
         7: .line 210
            iconst_1
            istore 3 /* readable */
         8: .line 211
            iconst_1
            istore 4 /* writable */
         9: .line 213
      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 214
            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 219
            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 222
            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 225
            aload 0 /* this */
            iconst_0
            iconst_1
            iconst_1
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish:(ZZZ)V
         3: .line 226
            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 230
            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 231
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killConnect:()V
         2: .line 232
      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 233
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killReading:()V
         4: .line 234
      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 235
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.killWriting:()V
         6: .line 236
      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 241
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.stateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 242
            aload 0 /* this */
            iconst_2
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
         2: .line 243
            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 244
            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 241
            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 246
      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 249
            aconst_null
            astore 2 /* e */
        start local 2 // java.lang.Throwable e
         1: .line 251
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         2: .line 252
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.fdVal:I
            invokestatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.checkConnect:(I)V
         3: .line 253
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
         4: .line 254
            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 255
            aload 3 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 8
         7: .line 256
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 3 /* x */
         8: .line 257
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3 /* x */
            astore 2 /* e */
        end local 3 // java.lang.Throwable x
         9: .line 259
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 14
        10: .line 258
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 4
        11: .line 259
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        12: .line 260
            aload 4
            athrow
        13: .line 259
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        14: .line 261
      StackMap locals:
      StackMap stack:
            aload 2 /* e */
            ifnull 22
        15: .line 262
            aload 2 /* e */
            instanceof java.io.IOException
            ifeq 18
        16: .line 263
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            astore 3 /* isa */
        start local 3 // java.net.InetSocketAddress isa
        17: .line 264
            aload 2 /* e */
            checkcast java.io.IOException
            aload 3 /* isa */
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            astore 2 /* e */
        end local 3 // java.net.InetSocketAddress isa
        18: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
        19: .line 269
            goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 3 /* suppressed */
        start local 3 // java.lang.Throwable suppressed
        21: .line 270
            aload 2 /* e */
            aload 3 /* suppressed */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable suppressed
        22: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
            astore 3 /* handler */
        start local 3 // java.nio.channels.CompletionHandler handler
        23: .line 276
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectHandler:Ljava/nio/channels/CompletionHandler;
        24: .line 277
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
            astore 4 /* att */
        start local 4 // java.lang.Object att
        25: .line 278
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
            astore 5 /* future */
        start local 5 // sun.nio.ch.PendingFuture future
        26: .line 279
            aload 3 /* handler */
            ifnonnull 29
        27: .line 280
            aload 5 /* future */
            aconst_null
            aload 2 /* e */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        28: .line 281
            goto 33
        29: .line 282
      StackMap locals: java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 32
        30: .line 283
            aload 3 /* handler */
            aload 4 /* att */
            aconst_null
            aload 2 /* e */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        31: .line 284
            goto 33
        32: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* handler */
            aload 4 /* att */
            aconst_null
            aload 2 /* e */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        33: .line 288
      StackMap locals:
      StackMap stack:
            return
        end local 5 // sun.nio.ch.PendingFuture future
        end local 4 // java.lang.Object att
        end local 3 // java.nio.channels.CompletionHandler handler
        end local 2 // java.lang.Throwable e
        end local 1 // boolean mayInvokeDirect
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   34     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   34     1  mayInvokeDirect  Z
            1   34     2                e  Ljava/lang/Throwable;
            6    9     3                x  Ljava/lang/Throwable;
           17   18     3              isa  Ljava/net/InetSocketAddress;
           21   22     3       suppressed  Ljava/lang/Throwable;
           23   34     3          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;Ljava/lang/Object;>;
           25   34     4              att  Ljava/lang/Object;
           26   34     5           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Void;Ljava/lang/Object;>;
      Exception table:
        from    to  target  type
           1     4       5  Class java.lang.Throwable
           1     9      10  any
          18    19      20  Class java.lang.Throwable
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  

  <A> java.util.concurrent.Future<java.lang.Void> implConnect(java.net.SocketAddress, A, java.nio.channels.CompletionHandler<java.lang.Void, ? super A>);
    descriptor: (Ljava/net/SocketAddress;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=5, locals=13, args_size=4
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // java.net.SocketAddress remote
        start local 2 // java.lang.Object attachment
        start local 3 // java.nio.channels.CompletionHandler handler
         0: .line 296
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.isOpen:()Z
            ifne 6
         1: .line 297
            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 298
            aload 3 /* handler */
            ifnonnull 4
         3: .line 299
            aload 4 /* e */
            invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
         4: .line 301
      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 302
            aconst_null
            areturn
        end local 4 // java.lang.Throwable e
         6: .line 306
      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 309
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* sm */
        start local 5 // java.lang.SecurityManager sm
         8: .line 310
            aload 5 /* sm */
            ifnull 10
         9: .line 311
            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 315
      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 316
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
            iconst_2
            if_icmpne 13
        12: .line 317
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            athrow
        13: .line 318
      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 319
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
        15: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.state:I
        16: .line 321
            aload 0 /* this */
            aload 1 /* remote */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.pendingRemote:Ljava/net/SocketAddress;
        17: .line 322
            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 315
            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 325
      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 327
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        26: .line 329
            iload 6 /* notifyBeforeTcpConnect */
            ifeq 28
        27: .line 330
            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 331
      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 332
            iload 8 /* n */
            bipush -2
            if_icmpne 47
        30: .line 334
            aconst_null
            astore 9 /* result */
        start local 9 // sun.nio.ch.PendingFuture result
        31: .line 335
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 10
            monitorenter
        32: .line 336
            aload 3 /* handler */
            ifnonnull 36
        33: .line 337
            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 338
            aload 0 /* this */
            aload 9 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectFuture:Lsun/nio/ch/PendingFuture;
        35: .line 339
            goto 38
        36: .line 340
      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 341
            aload 0 /* this */
            aload 2 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectAttachment:Ljava/lang/Object;
        38: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.connectPending:Z
        39: .line 344
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        40: .line 335
            aload 10
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 10
            monitorexit
        43: athrow
        44: .line 346
      StackMap locals:
      StackMap stack:
            aload 9 /* result */
            astore 12
        45: .line 354
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        46: .line 346
            aload 12
            areturn
        end local 9 // sun.nio.ch.PendingFuture result
        47: .line 348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.setConnected:()V
        end local 8 // int n
        48: .line 349
            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 350
            aload 8 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 52
        51: .line 351
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 8 /* x */
        52: .line 352
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 8 /* x */
            astore 7 /* e */
        end local 8 // java.lang.Throwable x
        53: .line 354
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 58
        54: .line 353
      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 354
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        56: .line 355
            aload 11
            athrow
        57: .line 354
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        58: .line 358
      StackMap locals:
      StackMap stack:
            aload 7 /* e */
            ifnull 65
        59: .line 359
            aload 7 /* e */
            instanceof java.io.IOException
            ifeq 61
        60: .line 360
            aload 7 /* e */
            checkcast java.io.IOException
            aload 4 /* isa */
            invokestatic sun.net.util.SocketExceptions.of:(Ljava/io/IOException;Ljava/net/InetSocketAddress;)Ljava/io/IOException;
            astore 7 /* e */
        61: .line 363
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.close:()V
        62: .line 364
            goto 65
      StackMap locals:
      StackMap stack: java.lang.Throwable
        63: astore 8 /* suppressed */
        start local 8 // java.lang.Throwable suppressed
        64: .line 365
            aload 7 /* e */
            aload 8 /* suppressed */
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
        end local 8 // java.lang.Throwable suppressed
        65: .line 368
      StackMap locals:
      StackMap stack:
            aload 3 /* handler */
            ifnonnull 67
        66: .line 369
            aconst_null
            aload 7 /* e */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        67: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* handler */
            aload 2 /* attachment */
            aconst_null
            aload 7 /* e */
            invokestatic sun.nio.ch.Invoker.invoke:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        68: .line 372
            aconst_null
            areturn
        end local 7 // java.lang.Throwable e
        end local 6 // boolean notifyBeforeTcpConnect
        end local 5 // java.lang.SecurityManager sm
        end local 4 // java.net.InetSocketAddress isa
        end local 3 // java.nio.channels.CompletionHandler handler
        end local 2 // java.lang.Object attachment
        end local 1 // java.net.SocketAddress remote
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   69     0                    this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   69     1                  remote  Ljava/net/SocketAddress;
            0   69     2              attachment  TA;
            0   69     3                 handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;
            2    6     4                       e  Ljava/lang/Throwable;
            7   69     4                     isa  Ljava/net/InetSocketAddress;
            8   69     5                      sm  Ljava/lang/SecurityManager;
           20   22     6  notifyBeforeTcpConnect  Z
           24   69     6  notifyBeforeTcpConnect  Z
           25   69     7                       e  Ljava/lang/Throwable;
           29   48     8                       n  I
           31   47     9                  result  Lsun/nio/ch/PendingFuture<Ljava/lang/Void;TA;>;
           50   53     8                       x  Ljava/lang/Throwable;
           64   65     8              suppressed  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          11    21      22  any
          22    23      22  any
          32    41      42  any
          42    43      42  any
          25    45      49  Class java.lang.Throwable
          47    48      49  Class java.lang.Throwable
          25    45      54  any
          47    53      54  any
          61    62      63  Class java.lang.Throwable
    Signature: <A:Ljava/lang/Object;>(Ljava/net/SocketAddress;TA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Void;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Void;>;
    MethodParameters:
            Name  Flags
      remote      
      attachment  
      handler     

  private void finishRead(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean mayInvokeDirect
         0: .line 379
            iconst_m1
            istore 2 /* n */
        start local 2 // int n
         1: .line 380
            aconst_null
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
         2: .line 383
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
            istore 4 /* scattering */
        start local 4 // boolean scattering
         3: .line 384
            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 385
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
            astore 6 /* att */
        start local 6 // java.lang.Object att
         5: .line 386
            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 387
            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 390
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         8: .line 392
            iload 4 /* scattering */
            ifeq 11
         9: .line 393
            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 394
            goto 12
        11: .line 395
      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 397
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 23
        13: .line 399
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 400
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
        15: .line 399
            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 421
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 21
        20: .line 422
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        21: .line 423
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        22: .line 402
            return
        23: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
        24: .line 407
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
        25: .line 408
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        26: .line 409
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
        27: .line 412
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        28: .line 414
            goto 42
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 9 /* x */
        start local 9 // java.lang.Throwable x
        30: .line 415
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        31: .line 416
            aload 9 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 33
        32: .line 417
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 9 /* x */
        33: .line 418
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 9 /* x */
            astore 3 /* exc */
        end local 9 // java.lang.Throwable x
        34: .line 421
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 36
        35: .line 422
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        36: .line 423
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 45
        37: .line 419
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        38: .line 421
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 40
        39: .line 422
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        40: .line 423
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        41: .line 424
            aload 10
            athrow
        42: .line 421
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 44
        43: .line 422
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        44: .line 423
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        45: .line 427
      StackMap locals:
      StackMap stack:
            aload 8 /* timeout */
            ifnull 47
        46: .line 428
            aload 8 /* timeout */
            iconst_0
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        47: .line 431
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            ifnull 48
            aconst_null
            goto 51
      StackMap locals:
      StackMap stack:
        48: iload 4 /* scattering */
            ifeq 50
        49: .line 432
            iload 2 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 51
      StackMap locals:
      StackMap stack:
        50: iload 2 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        51: .line 431
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 9 /* result */
        start local 9 // java.lang.Number result
        52: .line 435
            aload 5 /* handler */
            ifnonnull 55
        53: .line 436
            aload 7 /* future */
            aload 9 /* result */
            aload 3 /* exc */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        54: .line 437
            goto 59
        55: .line 438
      StackMap locals: java.lang.Number
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 58
        56: .line 439
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        57: .line 440
            goto 59
        58: .line 441
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        59: .line 444
      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   60     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   60     1  mayInvokeDirect  Z
            1   60     2                n  I
            2   60     3              exc  Ljava/lang/Throwable;
            3   60     4       scattering  Z
            4   60     5          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
            5   60     6              att  Ljava/lang/Object;
            6   60     7           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
            7   60     8          timeout  Ljava/util/concurrent/Future<*>;
           30   34     9                x  Ljava/lang/Throwable;
           52   60     9           result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          14    16      17  any
          17    18      17  any
           7    19      29  Class java.lang.Throwable
          23    28      29  Class java.lang.Throwable
           7    19      37  any
          23    34      37  any
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  

  <V extends java.lang.Number, A> java.util.concurrent.Future<V> 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 492
            aconst_null
            astore 9 /* myGroupAndInvokeCount */
        start local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
         1: .line 493
            iconst_0
            istore 10 /* invokeDirect */
        start local 10 // boolean invokeDirect
         2: .line 494
            iconst_0
            istore 11 /* attemptRead */
        start local 11 // boolean attemptRead
         3: .line 495
            getstatic sun.nio.ch.UnixAsynchronousSocketChannelImpl.disableSynchronousRead:Z
            ifne 12
         4: .line 496
            aload 8 /* handler */
            ifnonnull 7
         5: .line 497
            iconst_1
            istore 11 /* attemptRead */
         6: .line 498
            goto 12
         7: .line 499
      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 500
            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 502
            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 506
      StackMap locals:
      StackMap stack:
            bipush -2
            istore 12 /* n */
        start local 12 // int n
        13: .line 507
            aconst_null
            astore 13 /* exc */
        start local 13 // java.lang.Throwable exc
        14: .line 508
            iconst_0
            istore 14 /* pending */
        start local 14 // boolean pending
        15: .line 511
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        16: .line 513
            iload 11 /* attemptRead */
            ifeq 21
        17: .line 514
            iload 1 /* isScatteringRead */
            ifeq 20
        18: .line 515
            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 516
            goto 21
        20: .line 517
      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 521
      StackMap locals:
      StackMap stack:
            iload 12 /* n */
            bipush -2
            if_icmpne 62
        22: .line 522
            aconst_null
            astore 15 /* result */
        start local 15 // sun.nio.ch.PendingFuture result
        23: .line 523
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 16
            monitorenter
        24: .line 524
            aload 0 /* this */
            iload 1 /* isScatteringRead */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isScatteringRead:Z
        25: .line 525
            aload 0 /* this */
            aload 2 /* dst */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffer:Ljava/nio/ByteBuffer;
        26: .line 526
            aload 0 /* this */
            aload 3 /* dsts */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readBuffers:[Ljava/nio/ByteBuffer;
        27: .line 527
            aload 8 /* handler */
            ifnonnull 33
        28: .line 528
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readHandler:Ljava/nio/channels/CompletionHandler;
        29: .line 529
            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 530
            aload 0 /* this */
            aload 15 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
        31: .line 531
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        32: .line 532
            goto 36
        33: .line 533
      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 534
            aload 0 /* this */
            aload 7 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readAttachment:Ljava/lang/Object;
        35: .line 535
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readFuture:Lsun/nio/ch/PendingFuture;
        36: .line 537
      StackMap locals:
      StackMap stack:
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 38
        37: .line 538
            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 540
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.readPending:Z
        39: .line 541
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        40: .line 523
            aload 16
            monitorexit
        41: goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: aload 16
            monitorexit
        43: athrow
        44: .line 543
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* pending */
        45: .line 544
            aload 15 /* result */
            astore 18
        46: .line 551
            iload 14 /* pending */
            ifne 48
        47: .line 552
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        48: .line 553
      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 544
            aload 18
            areturn
        end local 15 // sun.nio.ch.PendingFuture result
        50: .line 546
      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 547
            aload 15 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 53
        52: .line 548
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 15 /* x */
        53: .line 549
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 15 /* x */
            astore 13 /* exc */
        end local 15 // java.lang.Throwable x
        54: .line 551
            iload 14 /* pending */
            ifne 56
        55: .line 552
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        56: .line 553
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 65
        57: .line 550
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 17
        58: .line 551
            iload 14 /* pending */
            ifne 60
        59: .line 552
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        60: .line 553
      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 554
            aload 17
            athrow
        62: .line 551
      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 552
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableReading:()V
        64: .line 553
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        65: .line 556
      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 557
            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 556
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 15 /* result */
        start local 15 // java.lang.Number result
        70: .line 560
            aload 8 /* handler */
            ifnull 76
        71: .line 561
            iload 10 /* invokeDirect */
            ifeq 74
        72: .line 562
            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 563
            goto 75
        74: .line 564
      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 566
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        76: .line 568
      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 575
            iconst_m1
            istore 2 /* n */
        start local 2 // int n
         1: .line 576
            aconst_null
            astore 3 /* exc */
        start local 3 // java.lang.Throwable exc
         2: .line 579
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
            istore 4 /* gathering */
        start local 4 // boolean gathering
         3: .line 580
            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 581
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
            astore 6 /* att */
        start local 6 // java.lang.Object att
         5: .line 582
            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 583
            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 586
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
         8: .line 588
            iload 4 /* gathering */
            ifeq 11
         9: .line 589
            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 590
            goto 12
        11: .line 591
      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 593
      StackMap locals:
      StackMap stack:
            iload 2 /* n */
            bipush -2
            if_icmpne 23
        13: .line 595
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 9
            monitorenter
        14: .line 596
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        15: .line 595
            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 617
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 21
        20: .line 618
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        21: .line 619
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        22: .line 598
            return
        23: .line 602
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
        24: .line 603
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
        25: .line 604
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        26: .line 605
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
        27: .line 608
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        28: .line 610
            goto 42
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 9 /* x */
        start local 9 // java.lang.Throwable x
        30: .line 611
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        31: .line 612
            aload 9 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 33
        32: .line 613
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 9 /* x */
        33: .line 614
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 9 /* x */
            astore 3 /* exc */
        end local 9 // java.lang.Throwable x
        34: .line 617
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 36
        35: .line 618
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        36: .line 619
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 45
        37: .line 615
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        38: .line 617
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 40
        39: .line 618
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        40: .line 619
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        41: .line 620
            aload 10
            athrow
        42: .line 617
      StackMap locals: sun.nio.ch.UnixAsynchronousSocketChannelImpl int int java.lang.Throwable int java.nio.channels.CompletionHandler java.lang.Object sun.nio.ch.PendingFuture java.util.concurrent.Future
      StackMap stack:
            aload 3 /* exc */
            instanceof java.nio.channels.AsynchronousCloseException
            ifne 44
        43: .line 618
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.lockAndUpdateEvents:()V
        44: .line 619
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        45: .line 623
      StackMap locals:
      StackMap stack:
            aload 8 /* timer */
            ifnull 47
        46: .line 624
            aload 8 /* timer */
            iconst_0
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            pop
        47: .line 627
      StackMap locals:
      StackMap stack:
            aload 3 /* exc */
            ifnull 48
            aconst_null
            goto 51
      StackMap locals:
      StackMap stack:
        48: iload 4 /* gathering */
            ifeq 50
        49: .line 628
            iload 2 /* n */
            i2l
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 51
      StackMap locals:
      StackMap stack:
        50: iload 2 /* n */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
        51: .line 627
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 9 /* result */
        start local 9 // java.lang.Number result
        52: .line 631
            aload 5 /* handler */
            ifnonnull 55
        53: .line 632
            aload 7 /* future */
            aload 9 /* result */
            aload 3 /* exc */
            invokevirtual sun.nio.ch.PendingFuture.setResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        54: .line 633
            goto 59
        55: .line 634
      StackMap locals: java.lang.Number
      StackMap stack:
            iload 1 /* mayInvokeDirect */
            ifeq 58
        56: .line 635
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeUnchecked:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        57: .line 636
            goto 59
        58: .line 637
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* handler */
            aload 6 /* att */
            aload 9 /* result */
            aload 3 /* exc */
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/AsynchronousChannel;Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
        59: .line 640
      StackMap locals:
      StackMap stack:
            return
        end local 9 // java.lang.Number result
        end local 8 // java.util.concurrent.Future timer
        end local 7 // sun.nio.ch.PendingFuture future
        end local 6 // java.lang.Object att
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // boolean gathering
        end local 3 // java.lang.Throwable exc
        end local 2 // int n
        end local 1 // boolean mayInvokeDirect
        end local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   60     0             this  Lsun/nio/ch/UnixAsynchronousSocketChannelImpl;
            0   60     1  mayInvokeDirect  Z
            1   60     2                n  I
            2   60     3              exc  Ljava/lang/Throwable;
            3   60     4        gathering  Z
            4   60     5          handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Number;Ljava/lang/Object;>;
            5   60     6              att  Ljava/lang/Object;
            6   60     7           future  Lsun/nio/ch/PendingFuture<Ljava/lang/Number;Ljava/lang/Object;>;
            7   60     8            timer  Ljava/util/concurrent/Future<*>;
           30   34     9                x  Ljava/lang/Throwable;
           52   60     9           result  Ljava/lang/Number;
      Exception table:
        from    to  target  type
          14    16      17  any
          17    18      17  any
           7    19      29  Class java.lang.Throwable
          23    28      29  Class java.lang.Throwable
           7    19      37  any
          23    34      37  any
    MethodParameters:
                 Name  Flags
      mayInvokeDirect  

  <V extends java.lang.Number, A> java.util.concurrent.Future<V> implWrite(boolean, java.nio.ByteBuffer, java.nio.ByteBuffer[], long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<V, ? super A>);
    descriptor: (ZLjava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=6, locals=19, args_size=8
        start local 0 // sun.nio.ch.UnixAsynchronousSocketChannelImpl this
        start local 1 // boolean isGatheringWrite
        start local 2 // java.nio.ByteBuffer src
        start local 3 // java.nio.ByteBuffer[] srcs
        start local 4 // long timeout
        start local 6 // java.util.concurrent.TimeUnit unit
        start local 7 // java.lang.Object attachment
        start local 8 // java.nio.channels.CompletionHandler handler
         0: .line 685
            invokestatic sun.nio.ch.Invoker.getGroupAndInvokeCount:()Lsun/nio/ch/Invoker$GroupAndInvokeCount;
         1: .line 684
            astore 9 /* myGroupAndInvokeCount */
        start local 9 // sun.nio.ch.Invoker$GroupAndInvokeCount myGroupAndInvokeCount
         2: .line 686
            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 687
            aload 8 /* handler */
            ifnull 6
            iload 10 /* invokeDirect */
            ifne 6
         4: .line 688
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.port:Lsun/nio/ch/Port;
            invokevirtual sun.nio.ch.Port.isFixedThreadPool:()Z
            ifeq 6
         5: .line 687
            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 690
            bipush -2
            istore 12 /* n */
        start local 12 // int n
         9: .line 691
            aconst_null
            astore 13 /* exc */
        start local 13 // java.lang.Throwable exc
        10: .line 692
            iconst_0
            istore 14 /* pending */
        start local 14 // boolean pending
        11: .line 695
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.begin:()V
        12: .line 697
            iload 11 /* attemptWrite */
            ifeq 17
        13: .line 698
            iload 1 /* isGatheringWrite */
            ifeq 16
        14: .line 699
            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 700
            goto 17
        16: .line 701
      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 705
      StackMap locals:
      StackMap stack:
            iload 12 /* n */
            bipush -2
            if_icmpne 58
        18: .line 706
            aconst_null
            astore 15 /* result */
        start local 15 // sun.nio.ch.PendingFuture result
        19: .line 707
            aload 0 /* this */
            getfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateLock:Ljava/lang/Object;
            dup
            astore 16
            monitorenter
        20: .line 708
            aload 0 /* this */
            iload 1 /* isGatheringWrite */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.isGatheringWrite:Z
        21: .line 709
            aload 0 /* this */
            aload 2 /* src */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffer:Ljava/nio/ByteBuffer;
        22: .line 710
            aload 0 /* this */
            aload 3 /* srcs */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeBuffers:[Ljava/nio/ByteBuffer;
        23: .line 711
            aload 8 /* handler */
            ifnonnull 29
        24: .line 712
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeHandler:Ljava/nio/channels/CompletionHandler;
        25: .line 713
            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 714
            aload 0 /* this */
            aload 15 /* result */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
        27: .line 715
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        28: .line 716
            goto 32
        29: .line 717
      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 718
            aload 0 /* this */
            aload 7 /* attachment */
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeAttachment:Ljava/lang/Object;
        31: .line 719
            aload 0 /* this */
            aconst_null
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writeFuture:Lsun/nio/ch/PendingFuture;
        32: .line 721
      StackMap locals:
      StackMap stack:
            lload 4 /* timeout */
            lconst_0
            lcmp
            ifle 34
        33: .line 722
            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 724
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.UnixAsynchronousSocketChannelImpl.writePending:Z
        35: .line 725
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.updateEvents:()V
        36: .line 707
            aload 16
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 16
            monitorexit
        39: athrow
        40: .line 727
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* pending */
        41: .line 728
            aload 15 /* result */
            astore 18
        42: .line 735
            iload 14 /* pending */
            ifne 44
        43: .line 736
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        44: .line 737
      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 728
            aload 18
            areturn
        end local 15 // sun.nio.ch.PendingFuture result
        46: .line 730
      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 731
            aload 15 /* x */
            instanceof java.nio.channels.ClosedChannelException
            ifeq 49
        48: .line 732
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            astore 15 /* x */
        49: .line 733
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 15 /* x */
            astore 13 /* exc */
        end local 15 // java.lang.Throwable x
        50: .line 735
            iload 14 /* pending */
            ifne 52
        51: .line 736
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        52: .line 737
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
            goto 61
        53: .line 734
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 17
        54: .line 735
            iload 14 /* pending */
            ifne 56
        55: .line 736
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        56: .line 737
      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 738
            aload 17
            athrow
        58: .line 735
      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 736
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.enableWriting:()V
        60: .line 737
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.UnixAsynchronousSocketChannelImpl.end:()V
        61: .line 740
      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 741
            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 740
      StackMap locals:
      StackMap stack: java.lang.Number
            astore 15 /* result */
        start local 15 // java.lang.Number result
        66: .line 744
            aload 8 /* handler */
            ifnull 72
        67: .line 745
            iload 10 /* invokeDirect */
            ifeq 70
        68: .line 746
            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 747
            goto 71
        70: .line 748
      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 750
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        72: .line 752
      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