public class sun.nio.ch.SimpleAsynchronousFileChannelImpl extends sun.nio.ch.AsynchronousFileChannelImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.nio.ch.SimpleAsynchronousFileChannelImpl
  super_class: sun.nio.ch.AsynchronousFileChannelImpl
{
  private static final sun.nio.ch.FileDispatcher nd;
    descriptor: Lsun/nio/ch/FileDispatcher;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 51
            new sun.nio.ch.FileDispatcherImpl
            dup
            invokespecial sun.nio.ch.FileDispatcherImpl.<init>:()V
            putstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.io.FileDescriptor, boolean, boolean, java.util.concurrent.ExecutorService);
    descriptor: (Ljava/io/FileDescriptor;ZZLjava/util/concurrent/ExecutorService;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // java.io.FileDescriptor fdObj
        start local 2 // boolean reading
        start local 3 // boolean writing
        start local 4 // java.util.concurrent.ExecutorService executor
         0: .line 62
            aload 0 /* this */
            aload 1 /* fdObj */
            iload 2 /* reading */
            iload 3 /* writing */
            aload 4 /* executor */
            invokespecial sun.nio.ch.AsynchronousFileChannelImpl.<init>:(Ljava/io/FileDescriptor;ZZLjava/util/concurrent/ExecutorService;)V
         1: .line 54
            aload 0 /* this */
            new sun.nio.ch.NativeThreadSet
            dup
            iconst_2
            invokespecial sun.nio.ch.NativeThreadSet.<init>:(I)V
            putfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
         2: .line 63
            return
        end local 4 // java.util.concurrent.ExecutorService executor
        end local 3 // boolean writing
        end local 2 // boolean reading
        end local 1 // java.io.FileDescriptor fdObj
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0    3     1     fdObj  Ljava/io/FileDescriptor;
            0    3     2   reading  Z
            0    3     3   writing  Z
            0    3     4  executor  Ljava/util/concurrent/ExecutorService;
    MethodParameters:
          Name  Flags
      fdObj     
      reading   
      writing   
      executor  

  public static java.nio.channels.AsynchronousFileChannel open(java.io.FileDescriptor, boolean, boolean, sun.nio.ch.ThreadPool);
    descriptor: (Ljava/io/FileDescriptor;ZZLsun/nio/ch/ThreadPool;)Ljava/nio/channels/AsynchronousFileChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // java.io.FileDescriptor fdo
        start local 1 // boolean reading
        start local 2 // boolean writing
        start local 3 // sun.nio.ch.ThreadPool pool
         0: .line 71
            aload 3 /* pool */
            ifnonnull 2
         1: .line 72
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl$DefaultExecutorHolder.defaultExecutor:Ljava/util/concurrent/ExecutorService;
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 3 /* pool */
            invokevirtual sun.nio.ch.ThreadPool.executor:()Ljava/util/concurrent/ExecutorService;
         3: .line 71
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutorService
            astore 4 /* executor */
        start local 4 // java.util.concurrent.ExecutorService executor
         4: .line 73
            new sun.nio.ch.SimpleAsynchronousFileChannelImpl
            dup
            aload 0 /* fdo */
            iload 1 /* reading */
            iload 2 /* writing */
            aload 4 /* executor */
            invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl.<init>:(Ljava/io/FileDescriptor;ZZLjava/util/concurrent/ExecutorService;)V
            areturn
        end local 4 // java.util.concurrent.ExecutorService executor
        end local 3 // sun.nio.ch.ThreadPool pool
        end local 2 // boolean writing
        end local 1 // boolean reading
        end local 0 // java.io.FileDescriptor fdo
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0       fdo  Ljava/io/FileDescriptor;
            0    5     1   reading  Z
            0    5     2   writing  Z
            0    5     3      pool  Lsun/nio/ch/ThreadPool;
            4    5     4  executor  Ljava/util/concurrent/ExecutorService;
    MethodParameters:
         Name  Flags
      fdo      
      reading  
      writing  
      pool     

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
         0: .line 79
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            dup
            astore 1
            monitorenter
         1: .line 80
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closed:Z
            ifeq 4
         2: .line 81
            aload 1
            monitorexit
         3: return
         4: .line 82
      StackMap locals: java.io.FileDescriptor
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closed:Z
         5: .line 79
            aload 1
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 1
            monitorexit
         8: athrow
         9: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.invalidateAllLocks:()V
        10: .line 91
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.FileDispatcher.preClose:(Ljava/io/FileDescriptor;)V
        11: .line 92
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.signalAndWait:()V
        12: .line 95
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closeLock:Ljava/util/concurrent/locks/ReadWriteLock;
            invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
        13: .line 99
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closeLock:Ljava/util/concurrent/locks/ReadWriteLock;
            invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        14: .line 103
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.FileDispatcher.close:(Ljava/io/FileDescriptor;)V
        15: .line 104
            return
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
      Exception table:
        from    to  target  type
           1     3       7  any
           4     6       7  any
           7     8       7  any
    Exceptions:
      throws java.io.IOException

  public long size();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
         0: .line 108
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 1 /* ti */
        start local 1 // int ti
         1: .line 110
            lconst_0
            lstore 2 /* n */
        start local 2 // long n
         2: .line 112
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
         3: .line 114
      StackMap locals: int long
      StackMap stack:
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.FileDispatcher.size:(Ljava/io/FileDescriptor;)J
            lstore 2 /* n */
         4: .line 115
            lload 2 /* n */
            ldc -3
            lcmp
            ifne 5
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifne 3
         5: .line 116
      StackMap locals:
      StackMap stack:
            lload 2 /* n */
            lstore 5
         6: .line 118
            aload 0 /* this */
            lload 2 /* n */
            lconst_0
            lcmp
            iflt 7
            iconst_1
            goto 8
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long top long
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
         7: iconst_0
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long top long
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
         8: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
         9: .line 121
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 1 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        10: .line 116
            lload 5
            lreturn
        11: .line 117
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long
      StackMap stack: java.lang.Throwable
            astore 4
        12: .line 118
            aload 0 /* this */
            lload 2 /* n */
            lconst_0
            lcmp
            iflt 13
            iconst_1
            goto 14
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
        13: iconst_0
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
        14: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
        15: .line 119
            aload 4
            athrow
        end local 2 // long n
        16: .line 120
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
      StackMap stack: java.lang.Throwable
            astore 7
        17: .line 121
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 1 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        18: .line 122
            aload 7
            athrow
        end local 1 // int ti
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            1   19     1    ti  I
            2   16     2     n  J
      Exception table:
        from    to  target  type
           2     6      11  any
           1     9      16  any
          11    16      16  any
    Exceptions:
      throws java.io.IOException

  public java.nio.channels.AsynchronousFileChannel truncate(long);
    descriptor: (J)Ljava/nio/channels/AsynchronousFileChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // long size
         0: .line 127
            lload 1 /* size */
            lconst_0
            lcmp
            ifge 2
         1: .line 128
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative size"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
            ifne 4
         3: .line 130
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         4: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 3 /* ti */
        start local 3 // int ti
         5: .line 133
            lconst_0
            lstore 4 /* n */
        start local 4 // long n
         6: .line 135
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
         7: .line 137
      StackMap locals: int long
      StackMap stack:
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.FileDispatcher.size:(Ljava/io/FileDescriptor;)J
            lstore 4 /* n */
         8: .line 138
            lload 4 /* n */
            ldc -3
            lcmp
            ifne 9
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifne 7
         9: .line 141
      StackMap locals:
      StackMap stack:
            lload 1 /* size */
            lload 4 /* n */
            lcmp
            ifge 12
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifeq 12
        10: .line 143
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            lload 1 /* size */
            invokevirtual sun.nio.ch.FileDispatcher.truncate:(Ljava/io/FileDescriptor;J)I
            i2l
            lstore 4 /* n */
        11: .line 144
            lload 4 /* n */
            ldc -3
            lcmp
            ifne 12
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifne 10
        12: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 7
        13: .line 148
            aload 0 /* this */
            lload 4 /* n */
            lconst_0
            lcmp
            ifle 14
            iconst_1
            goto 15
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long top java.nio.channels.AsynchronousFileChannel
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
        14: iconst_0
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long top java.nio.channels.AsynchronousFileChannel
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
        15: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
        16: .line 151
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 3 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        17: .line 146
            aload 7
            areturn
        18: .line 147
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long
      StackMap stack: java.lang.Throwable
            astore 6
        19: .line 148
            aload 0 /* this */
            lload 4 /* n */
            lconst_0
            lcmp
            ifle 20
            iconst_1
            goto 21
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
        20: iconst_0
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long java.lang.Throwable
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
        21: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
        22: .line 149
            aload 6
            athrow
        end local 4 // long n
        23: .line 150
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int
      StackMap stack: java.lang.Throwable
            astore 8
        24: .line 151
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 3 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        25: .line 152
            aload 8
            athrow
        end local 3 // int ti
        end local 1 // long size
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   26     0  this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0   26     1  size  J
            5   26     3    ti  I
            6   23     4     n  J
      Exception table:
        from    to  target  type
           6    13      18  any
           5    16      23  any
          18    23      23  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      size  

  public void force(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // boolean metaData
         0: .line 157
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 2 /* ti */
        start local 2 // int ti
         1: .line 159
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         2: .line 161
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
         3: .line 164
      StackMap locals: int int
      StackMap stack:
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            iload 1 /* metaData */
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
            invokevirtual sun.nio.ch.FileDispatcher.force:(Ljava/io/FileDescriptor;ZZ)I
            istore 3 /* n */
         4: .line 165
            iload 3 /* n */
            bipush -3
            if_icmpne 11
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifne 3
         5: .line 166
            goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 4
         7: .line 167
            aload 0 /* this */
            iload 3 /* n */
            iflt 8
            iconst_1
            goto 9
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
         8: iconst_0
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int int java.lang.Throwable
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
         9: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
        10: .line 168
            aload 4
            athrow
        11: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* n */
            iflt 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
        12: iconst_0
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int int
      StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
        13: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
        end local 3 // int n
        14: .line 169
            goto 18
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int
      StackMap stack: java.lang.Throwable
        15: astore 5
        16: .line 170
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 2 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        17: .line 171
            aload 5
            athrow
        18: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 2 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        19: .line 172
            return
        end local 2 // int ti
        end local 1 // boolean metaData
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0   20     1  metaData  Z
            1   20     2        ti  I
            2   14     3         n  I
      Exception table:
        from    to  target  type
           2     6       6  any
           1    15      15  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      metaData  

  <A> java.util.concurrent.Future<java.nio.channels.FileLock> implLock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>);
    descriptor: (JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=12, locals=13, args_size=6
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // long position
        start local 3 // long size
        start local 5 // boolean shared
        start local 6 // java.lang.Object attachment
        start local 7 // java.nio.channels.CompletionHandler handler
         0: .line 181
            iload 5 /* shared */
            ifeq 2
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.reading:Z
            ifne 2
         1: .line 182
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         2: .line 183
      StackMap locals:
      StackMap stack:
            iload 5 /* shared */
            ifne 4
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
            ifne 4
         3: .line 184
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         4: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.addToFileLockTable:(JJZ)Lsun/nio/ch/FileLockImpl;
            astore 8 /* fli */
        start local 8 // sun.nio.ch.FileLockImpl fli
         5: .line 188
            aload 8 /* fli */
            ifnonnull 11
         6: .line 189
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            astore 9 /* exc */
        start local 9 // java.lang.Throwable exc
         7: .line 190
            aload 7 /* handler */
            ifnonnull 9
         8: .line 191
            aload 9 /* exc */
            invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
         9: .line 192
      StackMap locals: sun.nio.ch.FileLockImpl java.lang.Throwable
      StackMap stack:
            aload 7 /* handler */
            aload 6 /* attachment */
            aconst_null
            aload 9 /* exc */
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
        10: .line 193
            aconst_null
            areturn
        end local 9 // java.lang.Throwable exc
        11: .line 196
      StackMap locals:
      StackMap stack:
            aload 7 /* handler */
            ifnonnull 13
        12: .line 197
            new sun.nio.ch.PendingFuture
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;)V
            goto 14
      StackMap locals:
      StackMap stack:
        13: aconst_null
        14: .line 196
      StackMap locals:
      StackMap stack: sun.nio.ch.PendingFuture
            astore 9 /* result */
        start local 9 // sun.nio.ch.PendingFuture result
        15: .line 198
            new sun.nio.ch.SimpleAsynchronousFileChannelImpl$1
            dup
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            aload 8 /* fli */
            aload 7 /* handler */
            aload 9 /* result */
            aload 6 /* attachment */
            invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl$1.<init>:(Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;JJZLsun/nio/ch/FileLockImpl;Ljava/nio/channels/CompletionHandler;Lsun/nio/ch/PendingFuture;Ljava/lang/Object;)V
            astore 10 /* task */
        start local 10 // java.lang.Runnable task
        16: .line 231
            iconst_0
            istore 11 /* executed */
        start local 11 // boolean executed
        17: .line 233
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
            aload 10 /* task */
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
        18: .line 234
            iconst_1
            istore 11 /* executed */
        19: .line 235
            goto 24
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.FileLockImpl sun.nio.ch.PendingFuture java.lang.Runnable int
      StackMap stack: java.lang.Throwable
        20: astore 12
        21: .line 236
            iload 11 /* executed */
            ifne 23
        22: .line 238
            aload 0 /* this */
            aload 8 /* fli */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
        23: .line 240
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 12
            athrow
        24: .line 236
      StackMap locals:
      StackMap stack:
            iload 11 /* executed */
            ifne 26
        25: .line 238
            aload 0 /* this */
            aload 8 /* fli */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
        26: .line 241
      StackMap locals:
      StackMap stack:
            aload 9 /* result */
            areturn
        end local 11 // boolean executed
        end local 10 // java.lang.Runnable task
        end local 9 // sun.nio.ch.PendingFuture result
        end local 8 // sun.nio.ch.FileLockImpl fli
        end local 7 // java.nio.channels.CompletionHandler handler
        end local 6 // java.lang.Object attachment
        end local 5 // boolean shared
        end local 3 // long size
        end local 1 // long position
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0   27     1    position  J
            0   27     3        size  J
            0   27     5      shared  Z
            0   27     6  attachment  TA;
            0   27     7     handler  Ljava/nio/channels/CompletionHandler<Ljava/nio/channels/FileLock;-TA;>;
            5   27     8         fli  Lsun/nio/ch/FileLockImpl;
            7   11     9         exc  Ljava/lang/Throwable;
           15   27     9      result  Lsun/nio/ch/PendingFuture<Ljava/nio/channels/FileLock;TA;>;
           16   27    10        task  Ljava/lang/Runnable;
           17   27    11    executed  Z
      Exception table:
        from    to  target  type
          17    20      20  any
    Signature: <A:Ljava/lang/Object;>(JJZTA;Ljava/nio/channels/CompletionHandler<Ljava/nio/channels/FileLock;-TA;>;)Ljava/util/concurrent/Future<Ljava/nio/channels/FileLock;>;
    MethodParameters:
            Name  Flags
      position    final
      size        final
      shared      final
      attachment  final
      handler     final

  public java.nio.channels.FileLock tryLock(long, long, boolean);
    descriptor: (JJZ)Ljava/nio/channels/FileLock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=12, args_size=4
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // long position
        start local 3 // long size
        start local 5 // boolean shared
         0: .line 248
            iload 5 /* shared */
            ifeq 2
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.reading:Z
            ifne 2
         1: .line 249
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         2: .line 250
      StackMap locals:
      StackMap stack:
            iload 5 /* shared */
            ifne 4
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
            ifne 4
         3: .line 251
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         4: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.addToFileLockTable:(JJZ)Lsun/nio/ch/FileLockImpl;
            astore 6 /* fli */
        start local 6 // sun.nio.ch.FileLockImpl fli
         5: .line 255
            aload 6 /* fli */
            ifnonnull 7
         6: .line 256
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         7: .line 258
      StackMap locals: sun.nio.ch.FileLockImpl
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 7 /* ti */
        start local 7 // int ti
         8: .line 259
            iconst_0
            istore 8 /* gotLock */
        start local 8 // boolean gotLock
         9: .line 261
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
        10: .line 264
      StackMap locals: int int
      StackMap stack:
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            iconst_0
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokevirtual sun.nio.ch.FileDispatcher.lock:(Ljava/io/FileDescriptor;ZJJZ)I
            istore 9 /* n */
        start local 9 // int n
        11: .line 265
            iload 9 /* n */
            iconst_2
            if_icmpne 12
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifne 10
        12: .line 266
      StackMap locals: int
      StackMap stack:
            iload 9 /* n */
            ifne 20
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifeq 20
        13: .line 267
            iconst_1
            istore 8 /* gotLock */
        14: .line 268
            aload 6 /* fli */
            astore 11
        15: .line 277
            iload 8 /* gotLock */
            ifne 17
        16: .line 278
            aload 0 /* this */
            aload 6 /* fli */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
        17: .line 279
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int int top java.nio.channels.FileLock
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:()V
        18: .line 280
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        19: .line 268
            aload 11
            areturn
        20: .line 270
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int int
      StackMap stack:
            iload 9 /* n */
            iconst_m1
            if_icmpne 26
        21: .line 277
            iload 8 /* gotLock */
            ifne 23
        22: .line 278
            aload 0 /* this */
            aload 6 /* fli */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
        23: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:()V
        24: .line 280
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        25: .line 271
            aconst_null
            areturn
        26: .line 272
      StackMap locals:
      StackMap stack:
            iload 9 /* n */
            iconst_2
            if_icmpne 28
        27: .line 273
            new java.nio.channels.AsynchronousCloseException
            dup
            invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
            athrow
        28: .line 275
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 9 // int n
        29: .line 276
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int
      StackMap stack: java.lang.Throwable
            astore 10
        30: .line 277
            iload 8 /* gotLock */
            ifne 32
        31: .line 278
            aload 0 /* this */
            aload 6 /* fli */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
        32: .line 279
      StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:()V
        33: .line 280
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        34: .line 281
            aload 10
            athrow
        end local 8 // boolean gotLock
        end local 7 // int ti
        end local 6 // sun.nio.ch.FileLockImpl fli
        end local 5 // boolean shared
        end local 3 // long size
        end local 1 // long position
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   35     0      this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0   35     1  position  J
            0   35     3      size  J
            0   35     5    shared  Z
            5   35     6       fli  Lsun/nio/ch/FileLockImpl;
            8   35     7        ti  I
            9   35     8   gotLock  Z
           11   29     9         n  I
      Exception table:
        from    to  target  type
           9    15      29  any
          20    21      29  any
          26    29      29  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      size      
      shared    

  protected void implRelease(sun.nio.ch.FileLockImpl);
    descriptor: (Lsun/nio/ch/FileLockImpl;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // sun.nio.ch.FileLockImpl fli
         0: .line 286
            getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
            aload 1 /* fli */
            invokevirtual sun.nio.ch.FileLockImpl.position:()J
            aload 1 /* fli */
            invokevirtual sun.nio.ch.FileLockImpl.size:()J
            invokevirtual sun.nio.ch.FileDispatcher.release:(Ljava/io/FileDescriptor;JJ)V
         1: .line 287
            return
        end local 1 // sun.nio.ch.FileLockImpl fli
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0    2     1   fli  Lsun/nio/ch/FileLockImpl;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fli   

  <A> java.util.concurrent.Future<java.lang.Integer> implRead(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
    descriptor: (Ljava/nio/ByteBuffer;JLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=9, locals=8, args_size=5
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // java.nio.ByteBuffer dst
        start local 2 // long position
        start local 4 // java.lang.Object attachment
        start local 5 // java.nio.channels.CompletionHandler handler
         0: .line 295
            lload 2 /* position */
            lconst_0
            lcmp
            ifge 2
         1: .line 296
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative position"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.reading:Z
            ifne 4
         3: .line 298
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         4: .line 299
      StackMap locals:
      StackMap stack:
            aload 1 /* dst */
            invokevirtual java.nio.ByteBuffer.isReadOnly:()Z
            ifeq 6
         5: .line 300
            new java.lang.IllegalArgumentException
            dup
            ldc "Read-only buffer"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifeq 7
            aload 1 /* dst */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 14
         7: .line 304
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifeq 8
            aconst_null
            goto 9
      StackMap locals:
      StackMap stack:
         8: new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
      StackMap locals:
      StackMap stack: java.nio.channels.ClosedChannelException
         9: astore 6 /* exc */
        start local 6 // java.lang.Throwable exc
        10: .line 305
            aload 5 /* handler */
            ifnonnull 12
        11: .line 306
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* exc */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        12: .line 307
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5 /* handler */
            aload 4 /* attachment */
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* exc */
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
        13: .line 308
            aconst_null
            areturn
        end local 6 // java.lang.Throwable exc
        14: .line 311
      StackMap locals:
      StackMap stack:
            aload 5 /* handler */
            ifnonnull 16
        15: .line 312
            new sun.nio.ch.PendingFuture
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;)V
            goto 17
      StackMap locals:
      StackMap stack:
        16: aconst_null
        17: .line 311
      StackMap locals:
      StackMap stack: sun.nio.ch.PendingFuture
            astore 6 /* result */
        start local 6 // sun.nio.ch.PendingFuture result
        18: .line 313
            new sun.nio.ch.SimpleAsynchronousFileChannelImpl$2
            dup
            aload 0 /* this */
            aload 1 /* dst */
            lload 2 /* position */
            aload 5 /* handler */
            aload 6 /* result */
            aload 4 /* attachment */
            invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl$2.<init>:(Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;Ljava/nio/ByteBuffer;JLjava/nio/channels/CompletionHandler;Lsun/nio/ch/PendingFuture;Ljava/lang/Object;)V
            astore 7 /* task */
        start local 7 // java.lang.Runnable task
        19: .line 341
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
            aload 7 /* task */
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
        20: .line 342
            aload 6 /* result */
            areturn
        end local 7 // java.lang.Runnable task
        end local 6 // sun.nio.ch.PendingFuture result
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // java.lang.Object attachment
        end local 2 // long position
        end local 1 // java.nio.ByteBuffer dst
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0        this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0   21     1         dst  Ljava/nio/ByteBuffer;
            0   21     2    position  J
            0   21     4  attachment  TA;
            0   21     5     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;
           10   14     6         exc  Ljava/lang/Throwable;
           18   21     6      result  Lsun/nio/ch/PendingFuture<Ljava/lang/Integer;TA;>;
           19   21     7        task  Ljava/lang/Runnable;
    Signature: <A:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;JTA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Integer;>;
    MethodParameters:
            Name  Flags
      dst         final
      position    final
      attachment  final
      handler     final

  <A> java.util.concurrent.Future<java.lang.Integer> implWrite(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
    descriptor: (Ljava/nio/ByteBuffer;JLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
    flags: (0x0000) 
    Code:
      stack=9, locals=8, args_size=5
        start local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // long position
        start local 4 // java.lang.Object attachment
        start local 5 // java.nio.channels.CompletionHandler handler
         0: .line 351
            lload 2 /* position */
            lconst_0
            lcmp
            ifge 2
         1: .line 352
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative position"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
            ifne 4
         3: .line 354
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         4: .line 357
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifeq 5
            aload 1 /* src */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifne 12
         5: .line 358
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
            ifeq 6
            aconst_null
            goto 7
      StackMap locals:
      StackMap stack:
         6: new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
      StackMap locals:
      StackMap stack: java.nio.channels.ClosedChannelException
         7: astore 6 /* exc */
        start local 6 // java.lang.Throwable exc
         8: .line 359
            aload 5 /* handler */
            ifnonnull 10
         9: .line 360
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* exc */
            invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
            areturn
        10: .line 361
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5 /* handler */
            aload 4 /* attachment */
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* exc */
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
            invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
        11: .line 362
            aconst_null
            areturn
        end local 6 // java.lang.Throwable exc
        12: .line 365
      StackMap locals:
      StackMap stack:
            aload 5 /* handler */
            ifnonnull 14
        13: .line 366
            new sun.nio.ch.PendingFuture
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;)V
            goto 15
      StackMap locals:
      StackMap stack:
        14: aconst_null
        15: .line 365
      StackMap locals:
      StackMap stack: sun.nio.ch.PendingFuture
            astore 6 /* result */
        start local 6 // sun.nio.ch.PendingFuture result
        16: .line 367
            new sun.nio.ch.SimpleAsynchronousFileChannelImpl$3
            dup
            aload 0 /* this */
            aload 1 /* src */
            lload 2 /* position */
            aload 5 /* handler */
            aload 6 /* result */
            aload 4 /* attachment */
            invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl$3.<init>:(Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;Ljava/nio/ByteBuffer;JLjava/nio/channels/CompletionHandler;Lsun/nio/ch/PendingFuture;Ljava/lang/Object;)V
            astore 7 /* task */
        start local 7 // java.lang.Runnable task
        17: .line 395
            aload 0 /* this */
            getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
            aload 7 /* task */
            invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
        18: .line 396
            aload 6 /* result */
            areturn
        end local 7 // java.lang.Runnable task
        end local 6 // sun.nio.ch.PendingFuture result
        end local 5 // java.nio.channels.CompletionHandler handler
        end local 4 // java.lang.Object attachment
        end local 2 // long position
        end local 1 // java.nio.ByteBuffer src
        end local 0 // sun.nio.ch.SimpleAsynchronousFileChannelImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   19     0        this  Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
            0   19     1         src  Ljava/nio/ByteBuffer;
            0   19     2    position  J
            0   19     4  attachment  TA;
            0   19     5     handler  Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;
            8   12     6         exc  Ljava/lang/Throwable;
           16   19     6      result  Lsun/nio/ch/PendingFuture<Ljava/lang/Integer;TA;>;
           17   19     7        task  Ljava/lang/Runnable;
    Signature: <A:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;JTA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Integer;>;
    MethodParameters:
            Name  Flags
      src         final
      position    final
      attachment  final
      handler     final
}
SourceFile: "SimpleAsynchronousFileChannelImpl.java"
NestMembers:
  sun.nio.ch.SimpleAsynchronousFileChannelImpl$1  sun.nio.ch.SimpleAsynchronousFileChannelImpl$2  sun.nio.ch.SimpleAsynchronousFileChannelImpl$3  sun.nio.ch.SimpleAsynchronousFileChannelImpl$DefaultExecutorHolder
InnerClasses:
  sun.nio.ch.SimpleAsynchronousFileChannelImpl$1
  sun.nio.ch.SimpleAsynchronousFileChannelImpl$2
  sun.nio.ch.SimpleAsynchronousFileChannelImpl$3
  private DefaultExecutorHolder = sun.nio.ch.SimpleAsynchronousFileChannelImpl$DefaultExecutorHolder of sun.nio.ch.SimpleAsynchronousFileChannelImpl