public class sun.nio.ch.FileChannelImpl extends java.nio.channels.FileChannel
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.nio.ch.FileChannelImpl
  super_class: java.nio.channels.FileChannel
{
  private static sun.nio.ch.NativeDispatcher nd;
    descriptor: Lsun/nio/ch/NativeDispatcher;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static long allocationGranularity;
    descriptor: J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.reflect.Field isAMappedBufferField;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private java.io.FileDescriptor fd;
    descriptor: Ljava/io/FileDescriptor;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

  private sun.nio.ch.NativeThreadSet threads;
    descriptor: Lsun/nio/ch/NativeThreadSet;
    flags: (0x0002) ACC_PRIVATE

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

  private static volatile boolean transferSupported;
    descriptor: Z
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static volatile boolean pipeSupported;
    descriptor: Z
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static volatile boolean fileSupported;
    descriptor: Z
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

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

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

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

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

  public static final int NO_LOCK;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  public static final int LOCKED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int RET_EX_LOCK;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int INTERRUPTED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private volatile sun.nio.ch.FileChannelImpl$FileLockTable fileLockTable;
    descriptor: Lsun/nio/ch/FileChannelImpl$FileLockTable;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static boolean isSharedFileLockTable;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static volatile boolean propertyChecked;
    descriptor: Z
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 50
            ldc Lsun/nio/ch/FileChannelImpl;
            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.FileChannelImpl.$assertionsDisabled:Z
         3: .line 411
            iconst_1
            putstatic sun.nio.ch.FileChannelImpl.transferSupported:Z
         4: .line 416
            iconst_1
            putstatic sun.nio.ch.FileChannelImpl.pipeSupported:Z
         5: .line 421
            iconst_1
            putstatic sun.nio.ch.FileChannelImpl.fileSupported:Z
         6: .line 1273
            invokestatic sun.nio.ch.IOUtil.load:()V
         7: .line 1274
            invokestatic sun.nio.ch.FileChannelImpl.initIDs:()J
            putstatic sun.nio.ch.FileChannelImpl.allocationGranularity:J
         8: .line 1275
            new sun.nio.ch.FileDispatcher
            dup
            invokespecial sun.nio.ch.FileDispatcher.<init>:()V
            putstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
         9: .line 1276
            ldc "java.nio.MappedByteBuffer"
        10: .line 1277
            ldc "isAMappedBuffer"
        11: .line 1276
            invokestatic sun.nio.ch.Reflect.lookupField:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/reflect/Field;
            putstatic sun.nio.ch.FileChannelImpl.isAMappedBufferField:Ljava/lang/reflect/Field;
        12: .line 1278
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.io.FileDescriptor, boolean, boolean, java.lang.Object, boolean);
    descriptor: (Ljava/io/FileDescriptor;ZZLjava/lang/Object;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // boolean readable
        start local 3 // boolean writable
        start local 4 // java.lang.Object parent
        start local 5 // boolean append
         0: .line 80
            aload 0 /* this */
            invokespecial java.nio.channels.FileChannel.<init>:()V
         1: .line 75
            aload 0 /* this */
            new sun.nio.ch.NativeThreadSet
            dup
            iconst_2
            invokespecial sun.nio.ch.NativeThreadSet.<init>:(I)V
            putfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
         2: .line 78
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
         3: .line 83
            aload 0 /* this */
            aload 1 /* fd */
            putfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
         4: .line 84
            aload 0 /* this */
            iload 2 /* readable */
            putfield sun.nio.ch.FileChannelImpl.readable:Z
         5: .line 85
            aload 0 /* this */
            iload 3 /* writable */
            putfield sun.nio.ch.FileChannelImpl.writable:Z
         6: .line 86
            aload 0 /* this */
            aload 4 /* parent */
            putfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
         7: .line 87
            aload 0 /* this */
            iload 5 /* append */
            putfield sun.nio.ch.FileChannelImpl.appending:Z
         8: .line 88
            return
        end local 5 // boolean append
        end local 4 // java.lang.Object parent
        end local 3 // boolean writable
        end local 2 // boolean readable
        end local 1 // java.io.FileDescriptor fd
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lsun/nio/ch/FileChannelImpl;
            0    9     1        fd  Ljava/io/FileDescriptor;
            0    9     2  readable  Z
            0    9     3  writable  Z
            0    9     4    parent  Ljava/lang/Object;
            0    9     5    append  Z
    MethodParameters:
          Name  Flags
      fd        
      readable  
      writable  
      parent    
      append    

  public static java.nio.channels.FileChannel open(java.io.FileDescriptor, boolean, boolean, java.lang.Object);
    descriptor: (Ljava/io/FileDescriptor;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // java.io.FileDescriptor fd
        start local 1 // boolean readable
        start local 2 // boolean writable
        start local 3 // java.lang.Object parent
         0: .line 97
            new sun.nio.ch.FileChannelImpl
            dup
            aload 0 /* fd */
            iload 1 /* readable */
            iload 2 /* writable */
            aload 3 /* parent */
            iconst_0
            invokespecial sun.nio.ch.FileChannelImpl.<init>:(Ljava/io/FileDescriptor;ZZLjava/lang/Object;Z)V
            areturn
        end local 3 // java.lang.Object parent
        end local 2 // boolean writable
        end local 1 // boolean readable
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0        fd  Ljava/io/FileDescriptor;
            0    1     1  readable  Z
            0    1     2  writable  Z
            0    1     3    parent  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      fd        
      readable  
      writable  
      parent    

  public static java.nio.channels.FileChannel open(java.io.FileDescriptor, boolean, boolean, java.lang.Object, boolean);
    descriptor: (Ljava/io/FileDescriptor;ZZLjava/lang/Object;Z)Ljava/nio/channels/FileChannel;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // java.io.FileDescriptor fd
        start local 1 // boolean readable
        start local 2 // boolean writable
        start local 3 // java.lang.Object parent
        start local 4 // boolean append
         0: .line 104
            new sun.nio.ch.FileChannelImpl
            dup
            aload 0 /* fd */
            iload 1 /* readable */
            iload 2 /* writable */
            aload 3 /* parent */
            iload 4 /* append */
            invokespecial sun.nio.ch.FileChannelImpl.<init>:(Ljava/io/FileDescriptor;ZZLjava/lang/Object;Z)V
            areturn
        end local 4 // boolean append
        end local 3 // java.lang.Object parent
        end local 2 // boolean writable
        end local 1 // boolean readable
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0        fd  Ljava/io/FileDescriptor;
            0    1     1  readable  Z
            0    1     2  writable  Z
            0    1     3    parent  Ljava/lang/Object;
            0    1     4    append  Z
    MethodParameters:
          Name  Flags
      fd        
      readable  
      writable  
      parent    
      append    

  private void ensureOpen();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.nio.ch.FileChannelImpl this
         0: .line 108
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 2
         1: .line 109
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         2: .line 110
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lsun/nio/ch/FileChannelImpl;
    Exceptions:
      throws java.io.IOException

  protected void implCloseChannel();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // sun.nio.ch.FileChannelImpl this
         0: .line 117
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.preClose:(Ljava/io/FileDescriptor;)V
         1: .line 118
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.signal:()V
         2: .line 121
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            ifnull 4
         3: .line 122
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            new sun.nio.ch.FileChannelImpl$1
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.FileChannelImpl$1.<init>:(Lsun/nio/ch/FileChannelImpl;)V
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.removeAll:(Lsun/nio/ch/FileChannelImpl$FileLockTable$Releaser;)V
         4: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            ifnull 12
         5: .line 137
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            instanceof java.io.FileInputStream
            ifeq 7
         6: .line 138
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            checkcast java.io.FileInputStream
            invokevirtual java.io.FileInputStream.close:()V
            goto 13
         7: .line 139
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            instanceof java.io.FileOutputStream
            ifeq 9
         8: .line 140
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            checkcast java.io.FileOutputStream
            invokevirtual java.io.FileOutputStream.close:()V
            goto 13
         9: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            instanceof java.io.RandomAccessFile
            ifeq 11
        10: .line 142
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.parent:Ljava/lang/Object;
            checkcast java.io.RandomAccessFile
            invokevirtual java.io.RandomAccessFile.close:()V
            goto 13
        11: .line 144
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        12: .line 147
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.NativeDispatcher.close:(Ljava/io/FileDescriptor;)V
        13: .line 150
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lsun/nio/ch/FileChannelImpl;
    Exceptions:
      throws java.io.IOException

  public int read(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer dst
         0: .line 153
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 154
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 3
         2: .line 155
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         3: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 157
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         5: .line 158
            iconst_m1
            istore 4 /* ti */
        start local 4 // int ti
         6: .line 160
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         7: .line 161
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 15
         8: .line 169
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         9: .line 170
            aload 0 /* this */
            iload 3 /* n */
            ifle 10
            iconst_1
            goto 11
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int
      StackMap stack: sun.nio.ch.FileChannelImpl
        10: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        11: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        12: .line 171
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 13
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        13: aload 2
            monitorexit
        14: .line 162
            iconst_0
            ireturn
        15: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 4 /* ti */
        16: .line 165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* dst */
            ldc -1
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;Ljava/lang/Object;)I
            istore 3 /* n */
        17: .line 166
            iload 3 /* n */
            bipush -3
            if_icmpne 18
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 16
        18: .line 167
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        19: .line 169
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        20: .line 170
            aload 0 /* this */
            iload 3 /* n */
            ifle 21
            iconst_1
            goto 22
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl
        21: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        22: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        23: .line 171
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 24
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 24
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        24: .line 167
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        25: iload 6
            ireturn
        26: .line 168
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int
      StackMap stack: java.lang.Throwable
            astore 5
        27: .line 169
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        28: .line 170
            aload 0 /* this */
            iload 3 /* n */
            ifle 29
            iconst_1
            goto 30
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        29: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        30: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        31: .line 171
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 32
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 32
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        32: .line 172
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 4 // int ti
        end local 3 // int n
        33: .line 156
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        34: athrow
        end local 1 // java.nio.ByteBuffer dst
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   35     0  this  Lsun/nio/ch/FileChannelImpl;
            0   35     1   dst  Ljava/nio/ByteBuffer;
            5   33     3     n  I
            6   33     4    ti  I
      Exception table:
        from    to  target  type
           6     8      26  any
          15    19      26  any
           4    14      33  any
          15    25      33  any
          26    34      33  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      dst   

  private long read0(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer[] dsts
         0: .line 177
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 178
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 3
         2: .line 179
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         3: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 181
            lconst_0
            lstore 3 /* n */
        start local 3 // long n
         5: .line 182
            iconst_m1
            istore 5 /* ti */
        start local 5 // int ti
         6: .line 184
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         7: .line 185
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 15
         8: .line 193
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         9: .line 194
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifle 10
            iconst_1
            goto 11
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl
        10: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        11: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        12: .line 195
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 13
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        13: aload 2
            monitorexit
        14: .line 186
            lconst_0
            lreturn
        15: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 5 /* ti */
        16: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* dsts */
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            lstore 3 /* n */
        17: .line 190
            lload 3 /* n */
            ldc -3
            lcmp
            ifne 18
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 16
        18: .line 191
      StackMap locals:
      StackMap stack:
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 7
        19: .line 193
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        20: .line 194
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifle 21
            iconst_1
            goto 22
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl
        21: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl int
        22: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        23: .line 195
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 24
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 24
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        24: .line 191
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        25: lload 7
            lreturn
        26: .line 192
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int
      StackMap stack: java.lang.Throwable
            astore 6
        27: .line 193
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        28: .line 194
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifle 29
            iconst_1
            goto 30
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        29: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        30: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        31: .line 195
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 32
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 32
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        32: .line 196
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 5 // int ti
        end local 3 // long n
        33: .line 180
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        34: athrow
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   35     0  this  Lsun/nio/ch/FileChannelImpl;
            0   35     1  dsts  [Ljava/nio/ByteBuffer;
            5   33     3     n  J
            6   33     5    ti  I
      Exception table:
        from    to  target  type
           6     8      26  any
          15    19      26  any
           4    14      33  any
          15    25      33  any
          26    34      33  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      dsts  

  public long read(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer[] dsts
        start local 2 // int offset
        start local 3 // int length
         0: .line 203
            iload 2 /* offset */
            iflt 1
            iload 3 /* length */
            iflt 1
            iload 2 /* offset */
            aload 1 /* dsts */
            arraylength
            iload 3 /* length */
            isub
            if_icmple 2
         1: .line 204
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 206
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* dsts */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic sun.nio.ch.Util.subsequence:([Ljava/nio/ByteBuffer;II)[Ljava/nio/ByteBuffer;
            invokevirtual sun.nio.ch.FileChannelImpl.read0:([Ljava/nio/ByteBuffer;)J
            lreturn
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] dsts
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lsun/nio/ch/FileChannelImpl;
            0    3     1    dsts  [Ljava/nio/ByteBuffer;
            0    3     2  offset  I
            0    3     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      dsts    
      offset  
      length  

  public int write(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer src
         0: .line 210
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 211
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 3
         2: .line 212
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         3: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 214
            iconst_0
            istore 3 /* n */
        start local 3 // int n
         5: .line 215
            iconst_m1
            istore 4 /* ti */
        start local 4 // int ti
         6: .line 217
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         7: .line 218
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 15
         8: .line 228
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         9: .line 229
            aload 0 /* this */
            iload 3 /* n */
            ifle 10
            iconst_1
            goto 11
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int
      StackMap stack: sun.nio.ch.FileChannelImpl
        10: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        11: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        12: .line 230
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 13
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        13: aload 2
            monitorexit
        14: .line 219
            iconst_0
            ireturn
        15: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 4 /* ti */
        16: .line 221
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.appending:Z
            ifeq 18
        17: .line 222
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            invokevirtual sun.nio.ch.FileChannelImpl.position:(J)Ljava/nio/channels/FileChannel;
            pop
        18: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* src */
            ldc -1
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;Ljava/lang/Object;)I
            istore 3 /* n */
        19: .line 225
            iload 3 /* n */
            bipush -3
            if_icmpne 20
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 18
        20: .line 226
      StackMap locals:
      StackMap stack:
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 6
        21: .line 228
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        22: .line 229
            aload 0 /* this */
            iload 3 /* n */
            ifle 23
            iconst_1
            goto 24
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl
        23: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        24: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        25: .line 230
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 26
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 26
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        26: .line 226
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        27: iload 6
            ireturn
        28: .line 227
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int
      StackMap stack: java.lang.Throwable
            astore 5
        29: .line 228
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        30: .line 229
            aload 0 /* this */
            iload 3 /* n */
            ifle 31
            iconst_1
            goto 32
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        31: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        32: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        33: .line 230
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 34
            iload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 34
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        34: .line 231
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 4 // int ti
        end local 3 // int n
        35: .line 213
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        36: athrow
        end local 1 // java.nio.ByteBuffer src
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   37     0  this  Lsun/nio/ch/FileChannelImpl;
            0   37     1   src  Ljava/nio/ByteBuffer;
            5   35     3     n  I
            6   35     4    ti  I
      Exception table:
        from    to  target  type
           6     8      28  any
          15    21      28  any
           4    14      35  any
          15    27      35  any
          28    36      35  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      src   

  private long write0(java.nio.ByteBuffer[]);
    descriptor: ([Ljava/nio/ByteBuffer;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer[] srcs
         0: .line 236
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 237
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 3
         2: .line 238
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         3: .line 239
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 240
            lconst_0
            lstore 3 /* n */
        start local 3 // long n
         5: .line 241
            iconst_m1
            istore 5 /* ti */
        start local 5 // int ti
         6: .line 243
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         7: .line 244
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 15
         8: .line 254
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         9: .line 255
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifle 10
            iconst_1
            goto 11
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl
        10: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        11: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        12: .line 256
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 13
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        13: aload 2
            monitorexit
        14: .line 245
            lconst_0
            lreturn
        15: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 5 /* ti */
        16: .line 247
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.appending:Z
            ifeq 18
        17: .line 248
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            invokevirtual sun.nio.ch.FileChannelImpl.position:(J)Ljava/nio/channels/FileChannel;
            pop
        18: .line 250
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* srcs */
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;[Ljava/nio/ByteBuffer;Lsun/nio/ch/NativeDispatcher;)J
            lstore 3 /* n */
        19: .line 251
            lload 3 /* n */
            ldc -3
            lcmp
            ifne 20
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 18
        20: .line 252
      StackMap locals:
      StackMap stack:
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 7
        21: .line 254
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        22: .line 255
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifle 23
            iconst_1
            goto 24
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl
        23: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl int
        24: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        25: .line 256
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 26
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 26
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        26: .line 252
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        27: lload 7
            lreturn
        28: .line 253
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int
      StackMap stack: java.lang.Throwable
            astore 6
        29: .line 254
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        30: .line 255
            aload 0 /* this */
            lload 3 /* n */
            lconst_0
            lcmp
            ifle 31
            iconst_1
            goto 32
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        31: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        32: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        33: .line 256
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 34
            lload 3 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 34
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        34: .line 257
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 5 // int ti
        end local 3 // long n
        35: .line 239
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer[] java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        36: athrow
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   37     0  this  Lsun/nio/ch/FileChannelImpl;
            0   37     1  srcs  [Ljava/nio/ByteBuffer;
            5   35     3     n  J
            6   35     5    ti  I
      Exception table:
        from    to  target  type
           6     8      28  any
          15    21      28  any
           4    14      35  any
          15    27      35  any
          28    36      35  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      srcs  

  public long write(java.nio.ByteBuffer[], int, int);
    descriptor: ([Ljava/nio/ByteBuffer;II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer[] srcs
        start local 2 // int offset
        start local 3 // int length
         0: .line 264
            iload 2 /* offset */
            iflt 1
            iload 3 /* length */
            iflt 1
            iload 2 /* offset */
            aload 1 /* srcs */
            arraylength
            iload 3 /* length */
            isub
            if_icmple 2
         1: .line 265
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
         2: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* srcs */
            iload 2 /* offset */
            iload 3 /* length */
            invokestatic sun.nio.ch.Util.subsequence:([Ljava/nio/ByteBuffer;II)[Ljava/nio/ByteBuffer;
            invokevirtual sun.nio.ch.FileChannelImpl.write0:([Ljava/nio/ByteBuffer;)J
            lreturn
        end local 3 // int length
        end local 2 // int offset
        end local 1 // java.nio.ByteBuffer[] srcs
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lsun/nio/ch/FileChannelImpl;
            0    3     1    srcs  [Ljava/nio/ByteBuffer;
            0    3     2  offset  I
            0    3     3  length  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      srcs    
      offset  
      length  

  public long position();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // sun.nio.ch.FileChannelImpl this
         0: .line 274
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 275
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         2: .line 276
            ldc -1
            lstore 2 /* p */
        start local 2 // long p
         3: .line 277
            iconst_m1
            istore 4 /* ti */
        start local 4 // int ti
         4: .line 279
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         5: .line 280
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 13
         6: .line 288
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         7: .line 289
            aload 0 /* this */
            lload 2 /* p */
            ldc -1
            lcmp
            ifle 8
            iconst_1
            goto 9
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl
         8: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
         9: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        10: .line 290
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 11
            lload 2 /* p */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        11: aload 1
            monitorexit
        12: .line 281
            lconst_0
            lreturn
        13: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 4 /* ti */
        14: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            ldc -1
            invokevirtual sun.nio.ch.FileChannelImpl.position0:(Ljava/io/FileDescriptor;J)J
            lstore 2 /* p */
        15: .line 285
            lload 2 /* p */
            ldc -3
            lcmp
            ifne 16
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 14
        16: .line 286
      StackMap locals:
      StackMap stack:
            lload 2 /* p */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 6
        17: .line 288
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        18: .line 289
            aload 0 /* this */
            lload 2 /* p */
            ldc -1
            lcmp
            ifle 19
            iconst_1
            goto 20
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl
        19: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl int
        20: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        21: .line 290
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 22
            lload 2 /* p */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 22
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        22: .line 286
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        23: lload 6
            lreturn
        24: .line 287
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int
      StackMap stack: java.lang.Throwable
            astore 5
        25: .line 288
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        26: .line 289
            aload 0 /* this */
            lload 2 /* p */
            ldc -1
            lcmp
            ifle 27
            iconst_1
            goto 28
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        27: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        28: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        29: .line 290
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 30
            lload 2 /* p */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 30
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        30: .line 291
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 4 // int ti
        end local 2 // long p
        31: .line 275
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        32: athrow
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   33     0  this  Lsun/nio/ch/FileChannelImpl;
            3   31     2     p  J
            4   31     4    ti  I
      Exception table:
        from    to  target  type
           4     6      24  any
          13    17      24  any
           2    12      31  any
          13    23      31  any
          24    32      31  any
    Exceptions:
      throws java.io.IOException

  public java.nio.channels.FileChannel position(long);
    descriptor: (J)Ljava/nio/channels/FileChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long newPosition
         0: .line 296
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 297
            lload 1 /* newPosition */
            lconst_0
            lcmp
            ifge 3
         2: .line 298
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         3: .line 299
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         4: .line 300
            ldc -1
            lstore 4 /* p */
        start local 4 // long p
         5: .line 301
            iconst_m1
            istore 6 /* ti */
        start local 6 // int ti
         6: .line 303
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         7: .line 304
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 15
         8: .line 312
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 6 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         9: .line 313
            aload 0 /* this */
            lload 4 /* p */
            ldc -1
            lcmp
            ifle 10
            iconst_1
            goto 11
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl
        10: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        11: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        12: .line 314
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 13
            lload 4 /* p */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 13
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        13: aload 3
            monitorexit
        14: .line 305
            aconst_null
            areturn
        15: .line 306
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 6 /* ti */
        16: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            lload 1 /* newPosition */
            invokevirtual sun.nio.ch.FileChannelImpl.position0:(Ljava/io/FileDescriptor;J)J
            lstore 4 /* p */
        17: .line 309
            lload 4 /* p */
            ldc -3
            lcmp
            ifne 18
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 16
        18: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 8
        19: .line 312
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 6 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        20: .line 313
            aload 0 /* this */
            lload 4 /* p */
            ldc -1
            lcmp
            ifle 21
            iconst_1
            goto 22
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int top java.nio.channels.FileChannel
      StackMap stack: sun.nio.ch.FileChannelImpl
        21: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int top java.nio.channels.FileChannel
      StackMap stack: sun.nio.ch.FileChannelImpl int
        22: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        23: .line 314
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 24
            lload 4 /* p */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 24
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        24: .line 310
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        25: aload 8
            areturn
        26: .line 311
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int
      StackMap stack: java.lang.Throwable
            astore 7
        27: .line 312
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 6 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        28: .line 313
            aload 0 /* this */
            lload 4 /* p */
            ldc -1
            lcmp
            ifle 29
            iconst_1
            goto 30
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        29: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        30: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        31: .line 314
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 32
            lload 4 /* p */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 32
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        32: .line 315
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        end local 6 // int ti
        end local 4 // long p
        33: .line 299
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        34: athrow
        end local 1 // long newPosition
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   35     0         this  Lsun/nio/ch/FileChannelImpl;
            0   35     1  newPosition  J
            5   33     4            p  J
            6   33     6           ti  I
      Exception table:
        from    to  target  type
           6     8      26  any
          15    19      26  any
           4    14      33  any
          15    25      33  any
          26    34      33  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      newPosition  

  public long size();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // sun.nio.ch.FileChannelImpl this
         0: .line 320
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 321
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         2: .line 322
            ldc -1
            lstore 2 /* s */
        start local 2 // long s
         3: .line 323
            iconst_m1
            istore 4 /* ti */
        start local 4 // int ti
         4: .line 325
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         5: .line 326
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 13
         6: .line 334
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         7: .line 335
            aload 0 /* this */
            lload 2 /* s */
            ldc -1
            lcmp
            ifle 8
            iconst_1
            goto 9
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl
         8: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
         9: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        10: .line 336
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 11
            lload 2 /* s */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        11: aload 1
            monitorexit
        12: .line 327
            ldc -1
            lreturn
        13: .line 328
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 4 /* ti */
        14: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual sun.nio.ch.FileChannelImpl.size0:(Ljava/io/FileDescriptor;)J
            lstore 2 /* s */
        15: .line 331
            lload 2 /* s */
            ldc -3
            lcmp
            ifne 16
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 14
        16: .line 332
      StackMap locals:
      StackMap stack:
            lload 2 /* s */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 6
        17: .line 334
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        18: .line 335
            aload 0 /* this */
            lload 2 /* s */
            ldc -1
            lcmp
            ifle 19
            iconst_1
            goto 20
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl
        19: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl int
        20: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        21: .line 336
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 22
            lload 2 /* s */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 22
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        22: .line 332
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        23: lload 6
            lreturn
        24: .line 333
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int
      StackMap stack: java.lang.Throwable
            astore 5
        25: .line 334
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 4 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        26: .line 335
            aload 0 /* this */
            lload 2 /* s */
            ldc -1
            lcmp
            ifle 27
            iconst_1
            goto 28
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        27: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        28: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        29: .line 336
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 30
            lload 2 /* s */
            invokestatic sun.nio.ch.IOStatus.check:(J)Z
            ifne 30
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        30: .line 337
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        end local 4 // int ti
        end local 2 // long s
        31: .line 321
      StackMap locals: sun.nio.ch.FileChannelImpl java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        32: athrow
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   33     0  this  Lsun/nio/ch/FileChannelImpl;
            3   31     2     s  J
            4   31     4    ti  I
      Exception table:
        from    to  target  type
           4     6      24  any
          13    17      24  any
           2    12      31  any
          13    23      31  any
          24    32      31  any
    Exceptions:
      throws java.io.IOException

  public java.nio.channels.FileChannel truncate(long);
    descriptor: (J)Ljava/nio/channels/FileChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long size
         0: .line 342
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 343
            lload 1 /* size */
            lconst_0
            lcmp
            ifge 3
         2: .line 344
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         3: .line 345
      StackMap locals:
      StackMap stack:
            lload 1 /* size */
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            lcmp
            ifle 5
         4: .line 346
            aload 0 /* this */
            areturn
         5: .line 347
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 7
         6: .line 348
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         7: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         8: .line 350
            iconst_m1
            istore 4 /* rv */
        start local 4 // int rv
         9: .line 351
            ldc -1
            lstore 5 /* p */
        start local 5 // long p
        10: .line 352
            iconst_m1
            istore 7 /* ti */
        start local 7 // int ti
        11: .line 354
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
        12: .line 355
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 20
        13: .line 382
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        14: .line 383
            aload 0 /* this */
            iload 4 /* rv */
            iconst_m1
            if_icmple 15
            iconst_1
            goto 16
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int
      StackMap stack: sun.nio.ch.FileChannelImpl
        15: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        16: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        17: .line 384
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 18
            iload 4 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 18
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        18: aload 3
            monitorexit
        19: .line 356
            aconst_null
            areturn
        20: .line 357
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 7 /* ti */
        21: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            ldc -1
            invokevirtual sun.nio.ch.FileChannelImpl.position0:(Ljava/io/FileDescriptor;J)J
            lstore 5 /* p */
        22: .line 362
            lload 5 /* p */
            ldc -3
            lcmp
            ifne 23
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 21
        23: .line 363
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 31
        24: .line 382
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        25: .line 383
            aload 0 /* this */
            iload 4 /* rv */
            iconst_m1
            if_icmple 26
            iconst_1
            goto 27
      StackMap locals:
      StackMap stack: sun.nio.ch.FileChannelImpl
        26: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        27: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        28: .line 384
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 29
            iload 4 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 29
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        29: aload 3
            monitorexit
        30: .line 364
            aconst_null
            areturn
        31: .line 365
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 32
            lload 5 /* p */
            lconst_0
            lcmp
            ifge 32
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        32: .line 369
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            lload 1 /* size */
            invokevirtual sun.nio.ch.FileChannelImpl.truncate0:(Ljava/io/FileDescriptor;J)I
            istore 4 /* rv */
        33: .line 370
            iload 4 /* rv */
            bipush -3
            if_icmpne 34
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 32
        34: .line 371
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 42
        35: .line 382
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        36: .line 383
            aload 0 /* this */
            iload 4 /* rv */
            iconst_m1
            if_icmple 37
            iconst_1
            goto 38
      StackMap locals:
      StackMap stack: sun.nio.ch.FileChannelImpl
        37: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        38: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        39: .line 384
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 40
            iload 4 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 40
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
      StackMap locals:
      StackMap stack:
        40: aload 3
            monitorexit
        41: .line 372
            aconst_null
            areturn
        42: .line 375
      StackMap locals:
      StackMap stack:
            lload 5 /* p */
            lload 1 /* size */
            lcmp
            ifle 44
        43: .line 376
            lload 1 /* size */
            lstore 5 /* p */
        44: .line 378
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            lload 5 /* p */
            invokevirtual sun.nio.ch.FileChannelImpl.position0:(Ljava/io/FileDescriptor;J)J
            l2i
            istore 4 /* rv */
        45: .line 379
            iload 4 /* rv */
            bipush -3
            if_icmpne 46
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 44
        46: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 9
        47: .line 382
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        48: .line 383
            aload 0 /* this */
            iload 4 /* rv */
            iconst_m1
            if_icmple 49
            iconst_1
            goto 50
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int top java.nio.channels.FileChannel
      StackMap stack: sun.nio.ch.FileChannelImpl
        49: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int top java.nio.channels.FileChannel
      StackMap stack: sun.nio.ch.FileChannelImpl int
        50: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        51: .line 384
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 52
            iload 4 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 52
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        52: .line 380
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        53: aload 9
            areturn
        54: .line 381
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int
      StackMap stack: java.lang.Throwable
            astore 8
        55: .line 382
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 7 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        56: .line 383
            aload 0 /* this */
            iload 4 /* rv */
            iconst_m1
            if_icmple 57
            iconst_1
            goto 58
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        57: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object int long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        58: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        59: .line 384
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 60
            iload 4 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 60
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        60: .line 385
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        end local 7 // int ti
        end local 5 // long p
        end local 4 // int rv
        61: .line 349
      StackMap locals: sun.nio.ch.FileChannelImpl long java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        62: athrow
        end local 1 // long size
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   63     0  this  Lsun/nio/ch/FileChannelImpl;
            0   63     1  size  J
            9   61     4    rv  I
           10   61     5     p  J
           11   61     7    ti  I
      Exception table:
        from    to  target  type
          11    13      54  any
          20    24      54  any
          31    35      54  any
          42    47      54  any
           8    19      61  any
          20    30      61  any
          31    41      61  any
          42    53      61  any
          54    62      61  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      size  

  public void force(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // boolean metaData
         0: .line 390
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 391
            iconst_m1
            istore 2 /* rv */
        start local 2 // int rv
         2: .line 392
            iconst_m1
            istore 3 /* ti */
        start local 3 // int ti
         3: .line 394
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
         4: .line 395
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 11
         5: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 3 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
         6: .line 403
            aload 0 /* this */
            iload 2 /* rv */
            iconst_m1
            if_icmple 7
            iconst_1
            goto 8
      StackMap locals: sun.nio.ch.FileChannelImpl int int int
      StackMap stack: sun.nio.ch.FileChannelImpl
         7: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl int int int
      StackMap stack: sun.nio.ch.FileChannelImpl int
         8: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
         9: .line 404
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 10
            iload 2 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 396
      StackMap locals:
      StackMap stack:
            return
        11: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 3 /* ti */
        12: .line 399
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            iload 1 /* metaData */
            invokevirtual sun.nio.ch.FileChannelImpl.force0:(Ljava/io/FileDescriptor;Z)I
            istore 2 /* rv */
        13: .line 400
            iload 2 /* rv */
            bipush -3
            if_icmpne 22
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 12
        14: .line 401
            goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 4
        16: .line 402
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 3 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        17: .line 403
            aload 0 /* this */
            iload 2 /* rv */
            iconst_m1
            if_icmple 18
            iconst_1
            goto 19
      StackMap locals: sun.nio.ch.FileChannelImpl int int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        18: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl int int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        19: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        20: .line 404
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 21
            iload 2 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 21
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        21: .line 405
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        22: .line 402
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 3 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        23: .line 403
            aload 0 /* this */
            iload 2 /* rv */
            iconst_m1
            if_icmple 24
            iconst_1
            goto 25
      StackMap locals:
      StackMap stack: sun.nio.ch.FileChannelImpl
        24: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl int int int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        25: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        26: .line 404
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 27
            iload 2 /* rv */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 27
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        27: .line 406
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int ti
        end local 2 // int rv
        end local 1 // boolean metaData
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   28     0      this  Lsun/nio/ch/FileChannelImpl;
            0   28     1  metaData  Z
            2   28     2        rv  I
            3   28     3        ti  I
      Exception table:
        from    to  target  type
           3     5      15  any
          11    15      15  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      metaData  

  private long transferToDirectly(long, int, java.nio.channels.WritableByteChannel);
    descriptor: (JILjava/nio/channels/WritableByteChannel;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=14, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long position
        start local 3 // int icount
        start local 4 // java.nio.channels.WritableByteChannel target
         0: .line 427
            getstatic sun.nio.ch.FileChannelImpl.transferSupported:Z
            ifne 2
         1: .line 428
            ldc -4
            lreturn
         2: .line 430
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* targetFD */
        start local 5 // java.io.FileDescriptor targetFD
         3: .line 431
            aload 4 /* target */
            instanceof sun.nio.ch.FileChannelImpl
            ifeq 8
         4: .line 432
            getstatic sun.nio.ch.FileChannelImpl.fileSupported:Z
            ifne 6
         5: .line 433
            ldc -6
            lreturn
         6: .line 434
      StackMap locals: java.io.FileDescriptor
      StackMap stack:
            aload 4 /* target */
            checkcast sun.nio.ch.FileChannelImpl
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            astore 5 /* targetFD */
         7: .line 435
            goto 12
      StackMap locals:
      StackMap stack:
         8: aload 4 /* target */
            instanceof sun.nio.ch.SelChImpl
            ifeq 12
         9: .line 437
            aload 4 /* target */
            instanceof sun.nio.ch.SinkChannelImpl
            ifeq 11
            getstatic sun.nio.ch.FileChannelImpl.pipeSupported:Z
            ifne 11
        10: .line 438
            ldc -6
            lreturn
        11: .line 439
      StackMap locals:
      StackMap stack:
            aload 4 /* target */
            checkcast sun.nio.ch.SelChImpl
            invokeinterface sun.nio.ch.SelChImpl.getFD:()Ljava/io/FileDescriptor;
            astore 5 /* targetFD */
        12: .line 441
      StackMap locals:
      StackMap stack:
            aload 5 /* targetFD */
            ifnonnull 14
        13: .line 442
            ldc -4
            lreturn
        14: .line 443
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            istore 6 /* thisFDVal */
        start local 6 // int thisFDVal
        15: .line 444
            aload 5 /* targetFD */
            invokestatic sun.nio.ch.IOUtil.fdVal:(Ljava/io/FileDescriptor;)I
            istore 7 /* targetFDVal */
        start local 7 // int targetFDVal
        16: .line 445
            iload 6 /* thisFDVal */
            iload 7 /* targetFDVal */
            if_icmpne 18
        17: .line 446
            ldc -4
            lreturn
        18: .line 448
      StackMap locals: int int
      StackMap stack:
            ldc -1
            lstore 8 /* n */
        start local 8 // long n
        19: .line 449
            iconst_m1
            istore 10 /* ti */
        start local 10 // int ti
        20: .line 451
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
        21: .line 452
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 27
        22: .line 472
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 10 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        23: .line 473
            aload 0 /* this */
            lload 8 /* n */
            ldc -1
            lcmp
            ifle 24
            iconst_1
            goto 25
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int
      StackMap stack: sun.nio.ch.FileChannelImpl
        24: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        25: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        26: .line 453
            ldc -1
            lreturn
        27: .line 454
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 10 /* ti */
        28: .line 456
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 6 /* thisFDVal */
            lload 1 /* position */
            iload 3 /* icount */
            i2l
            iload 7 /* targetFDVal */
            invokevirtual sun.nio.ch.FileChannelImpl.transferTo0:(IJJI)J
            lstore 8 /* n */
        29: .line 457
            lload 8 /* n */
            ldc -3
            lcmp
            ifne 30
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 28
        30: .line 458
      StackMap locals:
      StackMap stack:
            lload 8 /* n */
            ldc -6
            lcmp
            ifne 40
        31: .line 459
            aload 4 /* target */
            instanceof sun.nio.ch.SinkChannelImpl
            ifeq 33
        32: .line 460
            iconst_0
            putstatic sun.nio.ch.FileChannelImpl.pipeSupported:Z
        33: .line 461
      StackMap locals:
      StackMap stack:
            aload 4 /* target */
            instanceof sun.nio.ch.FileChannelImpl
            ifeq 35
        34: .line 462
            iconst_0
            putstatic sun.nio.ch.FileChannelImpl.fileSupported:Z
        35: .line 472
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 10 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        36: .line 473
            aload 0 /* this */
            lload 8 /* n */
            ldc -1
            lcmp
            ifle 37
            iconst_1
            goto 38
      StackMap locals:
      StackMap stack: sun.nio.ch.FileChannelImpl
        37: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        38: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        39: .line 463
            ldc -6
            lreturn
        40: .line 465
      StackMap locals:
      StackMap stack:
            lload 8 /* n */
            ldc -4
            lcmp
            ifne 47
        41: .line 467
            iconst_0
            putstatic sun.nio.ch.FileChannelImpl.transferSupported:Z
        42: .line 472
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 10 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        43: .line 473
            aload 0 /* this */
            lload 8 /* n */
            ldc -1
            lcmp
            ifle 44
            iconst_1
            goto 45
      StackMap locals:
      StackMap stack: sun.nio.ch.FileChannelImpl
        44: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        45: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        46: .line 468
            ldc -4
            lreturn
        47: .line 470
      StackMap locals:
      StackMap stack:
            lload 8 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(J)J
            lstore 12
        48: .line 472
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 10 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        49: .line 473
            aload 0 /* this */
            lload 8 /* n */
            ldc -1
            lcmp
            ifle 50
            iconst_1
            goto 51
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl
        50: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int top long
      StackMap stack: sun.nio.ch.FileChannelImpl int
        51: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        52: .line 470
            lload 12
            lreturn
        53: .line 471
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int
      StackMap stack: java.lang.Throwable
            astore 11
        54: .line 472
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 10 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        55: .line 473
            aload 0 /* this */
            lload 8 /* n */
            ldc -1
            lcmp
            ifle 56
            iconst_1
            goto 57
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        56: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.io.FileDescriptor int int long int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        57: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        58: .line 474
            aload 11
            athrow
        end local 10 // int ti
        end local 8 // long n
        end local 7 // int targetFDVal
        end local 6 // int thisFDVal
        end local 5 // java.io.FileDescriptor targetFD
        end local 4 // java.nio.channels.WritableByteChannel target
        end local 3 // int icount
        end local 1 // long position
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   59     0         this  Lsun/nio/ch/FileChannelImpl;
            0   59     1     position  J
            0   59     3       icount  I
            0   59     4       target  Ljava/nio/channels/WritableByteChannel;
            3   59     5     targetFD  Ljava/io/FileDescriptor;
           15   59     6    thisFDVal  I
           16   59     7  targetFDVal  I
           19   59     8            n  J
           20   59    10           ti  I
      Exception table:
        from    to  target  type
          20    22      53  any
          27    35      53  any
          40    42      53  any
          47    48      53  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      icount    
      target    

  private long transferToTrustedChannel(long, int, java.nio.channels.WritableByteChannel);
    descriptor: (JILjava/nio/channels/WritableByteChannel;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long position
        start local 3 // int icount
        start local 4 // java.nio.channels.WritableByteChannel target
         0: .line 481
            aload 4 /* target */
            instanceof sun.nio.ch.FileChannelImpl
            ifne 3
         1: .line 482
            aload 4 /* target */
            instanceof sun.nio.ch.SelChImpl
            ifne 3
         2: .line 483
            ldc -4
            lreturn
         3: .line 486
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* dbb */
        start local 5 // java.nio.MappedByteBuffer dbb
         4: .line 488
            aload 0 /* this */
            getstatic java.nio.channels.FileChannel$MapMode.READ_ONLY:Ljava/nio/channels/FileChannel$MapMode;
            lload 1 /* position */
            iload 3 /* icount */
            i2l
            invokevirtual sun.nio.ch.FileChannelImpl.map:(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;
            astore 5 /* dbb */
         5: .line 490
            aload 4 /* target */
            aload 5 /* dbb */
            invokeinterface java.nio.channels.WritableByteChannel.write:(Ljava/nio/ByteBuffer;)I
            i2l
            lstore 7
         6: .line 492
            aload 5 /* dbb */
            ifnull 8
         7: .line 493
            aload 5 /* dbb */
            invokestatic sun.nio.ch.FileChannelImpl.unmap:(Ljava/nio/MappedByteBuffer;)V
         8: .line 490
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.nio.MappedByteBuffer top long
      StackMap stack:
            lload 7
            lreturn
         9: .line 491
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel java.nio.MappedByteBuffer
      StackMap stack: java.lang.Throwable
            astore 6
        10: .line 492
            aload 5 /* dbb */
            ifnull 12
        11: .line 493
            aload 5 /* dbb */
            invokestatic sun.nio.ch.FileChannelImpl.unmap:(Ljava/nio/MappedByteBuffer;)V
        12: .line 494
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        end local 5 // java.nio.MappedByteBuffer dbb
        end local 4 // java.nio.channels.WritableByteChannel target
        end local 3 // int icount
        end local 1 // long position
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lsun/nio/ch/FileChannelImpl;
            0   13     1  position  J
            0   13     3    icount  I
            0   13     4    target  Ljava/nio/channels/WritableByteChannel;
            4   13     5       dbb  Ljava/nio/MappedByteBuffer;
      Exception table:
        from    to  target  type
           4     6       9  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      icount    
      target    

  private long transferToArbitraryChannel(long, int, java.nio.channels.WritableByteChannel);
    descriptor: (JILjava/nio/channels/WritableByteChannel;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=16, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long position
        start local 3 // int icount
        start local 4 // java.nio.channels.WritableByteChannel target
         0: .line 502
            iload 3 /* icount */
            sipush 8192
            invokestatic java.lang.Math.min:(II)I
            istore 5 /* c */
        start local 5 // int c
         1: .line 503
            iload 5 /* c */
            invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
            astore 6 /* bb */
        start local 6 // java.nio.ByteBuffer bb
         2: .line 504
            lconst_0
            lstore 7 /* tw */
        start local 7 // long tw
         3: .line 505
            lload 1 /* position */
            lstore 9 /* pos */
        start local 9 // long pos
         4: .line 507
            aload 6 /* bb */
            invokestatic sun.nio.ch.Util.erase:(Ljava/nio/ByteBuffer;)V
         5: .line 508
            goto 17
         6: .line 509
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel int java.nio.ByteBuffer long long
      StackMap stack:
            aload 6 /* bb */
            iload 3 /* icount */
            i2l
            lload 7 /* tw */
            lsub
            l2i
            sipush 8192
            invokestatic java.lang.Math.min:(II)I
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         7: .line 510
            aload 0 /* this */
            aload 6 /* bb */
            lload 9 /* pos */
            invokevirtual sun.nio.ch.FileChannelImpl.read:(Ljava/nio/ByteBuffer;J)I
            istore 11 /* nr */
        start local 11 // int nr
         8: .line 511
            iload 11 /* nr */
            ifgt 10
         9: .line 512
            goto 18
        10: .line 513
      StackMap locals: int
      StackMap stack:
            aload 6 /* bb */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        11: .line 516
            aload 4 /* target */
            aload 6 /* bb */
            invokeinterface java.nio.channels.WritableByteChannel.write:(Ljava/nio/ByteBuffer;)I
            istore 12 /* nw */
        start local 12 // int nw
        12: .line 517
            lload 7 /* tw */
            iload 12 /* nw */
            i2l
            ladd
            lstore 7 /* tw */
        13: .line 518
            iload 12 /* nw */
            iload 11 /* nr */
            if_icmpeq 15
        14: .line 519
            goto 18
        15: .line 520
      StackMap locals: int
      StackMap stack:
            lload 9 /* pos */
            iload 12 /* nw */
            i2l
            ladd
            lstore 9 /* pos */
        16: .line 521
            aload 6 /* bb */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        end local 12 // int nw
        end local 11 // int nr
        17: .line 508
      StackMap locals:
      StackMap stack:
            lload 7 /* tw */
            iload 3 /* icount */
            i2l
            lcmp
            iflt 6
        18: .line 523
      StackMap locals:
      StackMap stack:
            lload 7 /* tw */
            lstore 14
        19: .line 529
            aload 6 /* bb */
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        20: .line 523
            lload 14
            lreturn
        21: .line 524
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 11 /* x */
        start local 11 // java.io.IOException x
        22: .line 525
            lload 7 /* tw */
            lconst_0
            lcmp
            ifle 26
        23: .line 526
            lload 7 /* tw */
            lstore 14
        24: .line 529
            aload 6 /* bb */
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        25: .line 526
            lload 14
            lreturn
        26: .line 527
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 11 /* x */
            athrow
        end local 11 // java.io.IOException x
        27: .line 528
      StackMap locals: sun.nio.ch.FileChannelImpl long int java.nio.channels.WritableByteChannel int java.nio.ByteBuffer long long
      StackMap stack: java.lang.Throwable
            astore 13
        28: .line 529
            aload 6 /* bb */
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        29: .line 530
            aload 13
            athrow
        end local 9 // long pos
        end local 7 // long tw
        end local 6 // java.nio.ByteBuffer bb
        end local 5 // int c
        end local 4 // java.nio.channels.WritableByteChannel target
        end local 3 // int icount
        end local 1 // long position
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   30     0      this  Lsun/nio/ch/FileChannelImpl;
            0   30     1  position  J
            0   30     3    icount  I
            0   30     4    target  Ljava/nio/channels/WritableByteChannel;
            1   30     5         c  I
            2   30     6        bb  Ljava/nio/ByteBuffer;
            3   30     7        tw  J
            4   30     9       pos  J
            8   17    11        nr  I
           12   17    12        nw  I
           22   27    11         x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4    19      21  Class java.io.IOException
           4    19      27  any
          21    24      27  any
          26    27      27  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      icount    
      target    

  public long transferTo(long, long, java.nio.channels.WritableByteChannel);
    descriptor: (JJLjava/nio/channels/WritableByteChannel;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long position
        start local 3 // long count
        start local 5 // java.nio.channels.WritableByteChannel target
         0: .line 537
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 538
            aload 5 /* target */
            invokeinterface java.nio.channels.WritableByteChannel.isOpen:()Z
            ifne 3
         2: .line 539
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 540
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 5
         4: .line 541
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         5: .line 542
      StackMap locals:
      StackMap stack:
            aload 5 /* target */
            instanceof sun.nio.ch.FileChannelImpl
            ifeq 8
         6: .line 543
            aload 5 /* target */
            checkcast sun.nio.ch.FileChannelImpl
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 8
         7: .line 544
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         8: .line 545
      StackMap locals:
      StackMap stack:
            lload 1 /* position */
            lconst_0
            lcmp
            iflt 9
            lload 3 /* count */
            lconst_0
            lcmp
            ifge 10
         9: .line 546
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
        10: .line 547
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            lstore 6 /* sz */
        start local 6 // long sz
        11: .line 548
            lload 1 /* position */
            lload 6 /* sz */
            lcmp
            ifle 13
        12: .line 549
            lconst_0
            lreturn
        13: .line 550
      StackMap locals: long
      StackMap stack:
            lload 3 /* count */
            ldc 2147483647
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 8 /* icount */
        start local 8 // int icount
        14: .line 551
            lload 6 /* sz */
            lload 1 /* position */
            lsub
            iload 8 /* icount */
            i2l
            lcmp
            ifge 16
        15: .line 552
            lload 6 /* sz */
            lload 1 /* position */
            lsub
            l2i
            istore 8 /* icount */
        16: .line 557
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            lload 1 /* position */
            iload 8 /* icount */
            aload 5 /* target */
            invokevirtual sun.nio.ch.FileChannelImpl.transferToDirectly:(JILjava/nio/channels/WritableByteChannel;)J
            dup2
            lstore 9 /* n */
        start local 9 // long n
        17: lconst_0
            lcmp
            iflt 19
        18: .line 558
            lload 9 /* n */
            lreturn
        19: .line 561
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            lload 1 /* position */
            iload 8 /* icount */
            aload 5 /* target */
            invokevirtual sun.nio.ch.FileChannelImpl.transferToTrustedChannel:(JILjava/nio/channels/WritableByteChannel;)J
            dup2
            lstore 9 /* n */
            lconst_0
            lcmp
            iflt 21
        20: .line 562
            lload 9 /* n */
            lreturn
        21: .line 565
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* position */
            iload 8 /* icount */
            aload 5 /* target */
            invokevirtual sun.nio.ch.FileChannelImpl.transferToArbitraryChannel:(JILjava/nio/channels/WritableByteChannel;)J
            lreturn
        end local 9 // long n
        end local 8 // int icount
        end local 6 // long sz
        end local 5 // java.nio.channels.WritableByteChannel target
        end local 3 // long count
        end local 1 // long position
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   22     0      this  Lsun/nio/ch/FileChannelImpl;
            0   22     1  position  J
            0   22     3     count  J
            0   22     5    target  Ljava/nio/channels/WritableByteChannel;
           11   22     6        sz  J
           14   22     8    icount  I
           17   22     9         n  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      count     
      target    

  private long transferFromFileChannel(sun.nio.ch.FileChannelImpl, long, long);
    descriptor: (Lsun/nio/ch/FileChannelImpl;JJ)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=16, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // sun.nio.ch.FileChannelImpl src
        start local 2 // long position
        start local 4 // long count
         0: .line 573
            aload 1 /* src */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
         1: .line 574
            aload 1 /* src */
            invokevirtual sun.nio.ch.FileChannelImpl.position:()J
            lstore 7 /* p */
        start local 7 // long p
         2: .line 575
            lload 4 /* count */
            ldc 2147483647
            invokestatic java.lang.Math.min:(JJ)J
         3: .line 576
            aload 1 /* src */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            lload 7 /* p */
            lsub
         4: .line 575
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 9 /* icount */
        start local 9 // int icount
         5: .line 578
            aload 1 /* src */
            getstatic java.nio.channels.FileChannel$MapMode.READ_ONLY:Ljava/nio/channels/FileChannel$MapMode;
            lload 7 /* p */
            iload 9 /* icount */
            i2l
            invokevirtual sun.nio.ch.FileChannelImpl.map:(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;
            astore 10 /* bb */
        start local 10 // java.nio.MappedByteBuffer bb
         6: .line 580
            aload 0 /* this */
            aload 10 /* bb */
            lload 2 /* position */
            invokevirtual sun.nio.ch.FileChannelImpl.write:(Ljava/nio/ByteBuffer;J)I
            i2l
            lstore 11 /* n */
        start local 11 // long n
         7: .line 581
            aload 1 /* src */
            lload 7 /* p */
            lload 11 /* n */
            ladd
            invokevirtual sun.nio.ch.FileChannelImpl.position:(J)Ljava/nio/channels/FileChannel;
            pop
         8: .line 582
            lload 11 /* n */
            lstore 14
         9: .line 584
            aload 10 /* bb */
            invokestatic sun.nio.ch.FileChannelImpl.unmap:(Ljava/nio/MappedByteBuffer;)V
        10: .line 582
            aload 6
            monitorexit
        11: lload 14
            lreturn
        end local 11 // long n
        12: .line 583
      StackMap locals: sun.nio.ch.FileChannelImpl sun.nio.ch.FileChannelImpl long long java.lang.Object long int java.nio.MappedByteBuffer
      StackMap stack: java.lang.Throwable
            astore 13
        13: .line 584
            aload 10 /* bb */
            invokestatic sun.nio.ch.FileChannelImpl.unmap:(Ljava/nio/MappedByteBuffer;)V
        14: .line 585
            aload 13
            athrow
        end local 10 // java.nio.MappedByteBuffer bb
        end local 9 // int icount
        end local 7 // long p
        15: .line 573
      StackMap locals: sun.nio.ch.FileChannelImpl sun.nio.ch.FileChannelImpl long long java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 6
            monitorexit
        16: athrow
        end local 4 // long count
        end local 2 // long position
        end local 1 // sun.nio.ch.FileChannelImpl src
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lsun/nio/ch/FileChannelImpl;
            0   17     1       src  Lsun/nio/ch/FileChannelImpl;
            0   17     2  position  J
            0   17     4     count  J
            2   15     7         p  J
            5   15     9    icount  I
            6   15    10        bb  Ljava/nio/MappedByteBuffer;
            7   12    11         n  J
      Exception table:
        from    to  target  type
           6     9      12  any
           1    11      15  any
          12    16      15  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      src       
      position  
      count     

  private long transferFromArbitraryChannel(java.nio.channels.ReadableByteChannel, long, long);
    descriptor: (Ljava/nio/channels/ReadableByteChannel;JJ)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=17, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.channels.ReadableByteChannel src
        start local 2 // long position
        start local 4 // long count
         0: .line 596
            lload 4 /* count */
            ldc 8192
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 6 /* c */
        start local 6 // int c
         1: .line 597
            iload 6 /* c */
            invokestatic sun.nio.ch.Util.getTemporaryDirectBuffer:(I)Ljava/nio/ByteBuffer;
            astore 7 /* bb */
        start local 7 // java.nio.ByteBuffer bb
         2: .line 598
            lconst_0
            lstore 8 /* tw */
        start local 8 // long tw
         3: .line 599
            lload 2 /* position */
            lstore 10 /* pos */
        start local 10 // long pos
         4: .line 601
            aload 7 /* bb */
            invokestatic sun.nio.ch.Util.erase:(Ljava/nio/ByteBuffer;)V
         5: .line 602
            goto 17
         6: .line 603
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.channels.ReadableByteChannel long long int java.nio.ByteBuffer long long
      StackMap stack:
            aload 7 /* bb */
            lload 4 /* count */
            lload 8 /* tw */
            lsub
            ldc 8192
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
         7: .line 606
            aload 1 /* src */
            aload 7 /* bb */
            invokeinterface java.nio.channels.ReadableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 12 /* nr */
        start local 12 // int nr
         8: .line 607
            iload 12 /* nr */
            ifgt 10
         9: .line 608
            goto 18
        10: .line 609
      StackMap locals: int
      StackMap stack:
            aload 7 /* bb */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        11: .line 610
            aload 0 /* this */
            aload 7 /* bb */
            lload 10 /* pos */
            invokevirtual sun.nio.ch.FileChannelImpl.write:(Ljava/nio/ByteBuffer;J)I
            istore 13 /* nw */
        start local 13 // int nw
        12: .line 611
            lload 8 /* tw */
            iload 13 /* nw */
            i2l
            ladd
            lstore 8 /* tw */
        13: .line 612
            iload 13 /* nw */
            iload 12 /* nr */
            if_icmpeq 15
        14: .line 613
            goto 18
        15: .line 614
      StackMap locals: int
      StackMap stack:
            lload 10 /* pos */
            iload 13 /* nw */
            i2l
            ladd
            lstore 10 /* pos */
        16: .line 615
            aload 7 /* bb */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        end local 13 // int nw
        end local 12 // int nr
        17: .line 602
      StackMap locals:
      StackMap stack:
            lload 8 /* tw */
            lload 4 /* count */
            lcmp
            iflt 6
        18: .line 617
      StackMap locals:
      StackMap stack:
            lload 8 /* tw */
            lstore 15
        19: .line 623
            aload 7 /* bb */
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        20: .line 617
            lload 15
            lreturn
        21: .line 618
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 12 /* x */
        start local 12 // java.io.IOException x
        22: .line 619
            lload 8 /* tw */
            lconst_0
            lcmp
            ifle 26
        23: .line 620
            lload 8 /* tw */
            lstore 15
        24: .line 623
            aload 7 /* bb */
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        25: .line 620
            lload 15
            lreturn
        26: .line 621
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 12 /* x */
            athrow
        end local 12 // java.io.IOException x
        27: .line 622
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.channels.ReadableByteChannel long long int java.nio.ByteBuffer long long
      StackMap stack: java.lang.Throwable
            astore 14
        28: .line 623
            aload 7 /* bb */
            invokestatic sun.nio.ch.Util.releaseTemporaryDirectBuffer:(Ljava/nio/ByteBuffer;)V
        29: .line 624
            aload 14
            athrow
        end local 10 // long pos
        end local 8 // long tw
        end local 7 // java.nio.ByteBuffer bb
        end local 6 // int c
        end local 4 // long count
        end local 2 // long position
        end local 1 // java.nio.channels.ReadableByteChannel src
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   30     0      this  Lsun/nio/ch/FileChannelImpl;
            0   30     1       src  Ljava/nio/channels/ReadableByteChannel;
            0   30     2  position  J
            0   30     4     count  J
            1   30     6         c  I
            2   30     7        bb  Ljava/nio/ByteBuffer;
            3   30     8        tw  J
            4   30    10       pos  J
            8   17    12        nr  I
           12   17    13        nw  I
           22   27    12         x  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4    19      21  Class java.io.IOException
           4    19      27  any
          21    24      27  any
          26    27      27  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      src       
      position  
      count     

  public long transferFrom(java.nio.channels.ReadableByteChannel, long, long);
    descriptor: (Ljava/nio/channels/ReadableByteChannel;JJ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.channels.ReadableByteChannel src
        start local 2 // long position
        start local 4 // long count
         0: .line 631
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 632
            aload 1 /* src */
            invokeinterface java.nio.channels.ReadableByteChannel.isOpen:()Z
            ifne 3
         2: .line 633
            new java.nio.channels.ClosedChannelException
            dup
            invokespecial java.nio.channels.ClosedChannelException.<init>:()V
            athrow
         3: .line 634
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 5
         4: .line 635
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         5: .line 636
      StackMap locals:
      StackMap stack:
            lload 2 /* position */
            lconst_0
            lcmp
            iflt 6
            lload 4 /* count */
            lconst_0
            lcmp
            ifge 7
         6: .line 637
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         7: .line 638
      StackMap locals:
      StackMap stack:
            lload 2 /* position */
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            lcmp
            ifle 9
         8: .line 639
            lconst_0
            lreturn
         9: .line 640
      StackMap locals:
      StackMap stack:
            aload 1 /* src */
            instanceof sun.nio.ch.FileChannelImpl
            ifeq 13
        10: .line 641
            aload 0 /* this */
            aload 1 /* src */
            checkcast sun.nio.ch.FileChannelImpl
        11: .line 642
            lload 2 /* position */
            lload 4 /* count */
        12: .line 641
            invokevirtual sun.nio.ch.FileChannelImpl.transferFromFileChannel:(Lsun/nio/ch/FileChannelImpl;JJ)J
            lreturn
        13: .line 644
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* src */
            lload 2 /* position */
            lload 4 /* count */
            invokevirtual sun.nio.ch.FileChannelImpl.transferFromArbitraryChannel:(Ljava/nio/channels/ReadableByteChannel;JJ)J
            lreturn
        end local 4 // long count
        end local 2 // long position
        end local 1 // java.nio.channels.ReadableByteChannel src
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lsun/nio/ch/FileChannelImpl;
            0   14     1       src  Ljava/nio/channels/ReadableByteChannel;
            0   14     2  position  J
            0   14     4     count  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      src       
      position  
      count     

  public int read(java.nio.ByteBuffer, long);
    descriptor: (Ljava/nio/ByteBuffer;J)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer dst
        start local 2 // long position
         0: .line 648
            aload 1 /* dst */
            ifnonnull 2
         1: .line 649
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 650
      StackMap locals:
      StackMap stack:
            lload 2 /* position */
            lconst_0
            lcmp
            ifge 4
         3: .line 651
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative position"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 652
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 6
         5: .line 653
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         6: .line 654
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         7: .line 655
            iconst_0
            istore 4 /* n */
        start local 4 // int n
         8: .line 656
            iconst_m1
            istore 5 /* ti */
        start local 5 // int ti
         9: .line 658
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
        10: .line 659
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 17
        11: .line 667
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        12: .line 668
            aload 0 /* this */
            iload 4 /* n */
            ifle 13
            iconst_1
            goto 14
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int
      StackMap stack: sun.nio.ch.FileChannelImpl
        13: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        14: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        15: .line 669
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 16
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 16
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        16: .line 660
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        17: .line 661
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 5 /* ti */
        18: .line 663
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* dst */
            lload 2 /* position */
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            invokestatic sun.nio.ch.IOUtil.read:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;Ljava/lang/Object;)I
            istore 4 /* n */
        19: .line 664
            iload 4 /* n */
            bipush -3
            if_icmpne 20
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 18
        20: .line 665
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 7
        21: .line 667
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        22: .line 668
            aload 0 /* this */
            iload 4 /* n */
            ifle 23
            iconst_1
            goto 24
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl
        23: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        24: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        25: .line 669
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 26
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 26
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        26: .line 665
      StackMap locals:
      StackMap stack:
            iload 7
            ireturn
        27: .line 666
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int
      StackMap stack: java.lang.Throwable
            astore 6
        28: .line 667
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        29: .line 668
            aload 0 /* this */
            iload 4 /* n */
            ifle 30
            iconst_1
            goto 31
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        30: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        31: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        32: .line 669
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 33
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 33
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        33: .line 670
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 5 // int ti
        end local 4 // int n
        end local 2 // long position
        end local 1 // java.nio.ByteBuffer dst
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   34     0      this  Lsun/nio/ch/FileChannelImpl;
            0   34     1       dst  Ljava/nio/ByteBuffer;
            0   34     2  position  J
            8   34     4         n  I
            9   34     5        ti  I
      Exception table:
        from    to  target  type
           9    11      27  any
          17    21      27  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      dst       
      position  

  public int write(java.nio.ByteBuffer, long);
    descriptor: (Ljava/nio/ByteBuffer;J)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.ByteBuffer src
        start local 2 // long position
         0: .line 674
            aload 1 /* src */
            ifnonnull 2
         1: .line 675
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 676
      StackMap locals:
      StackMap stack:
            lload 2 /* position */
            lconst_0
            lcmp
            ifge 4
         3: .line 677
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative position"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 678
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 6
         5: .line 679
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         6: .line 680
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         7: .line 681
            iconst_0
            istore 4 /* n */
        start local 4 // int n
         8: .line 682
            iconst_m1
            istore 5 /* ti */
        start local 5 // int ti
         9: .line 684
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
        10: .line 685
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 17
        11: .line 693
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        12: .line 694
            aload 0 /* this */
            iload 4 /* n */
            ifle 13
            iconst_1
            goto 14
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int
      StackMap stack: sun.nio.ch.FileChannelImpl
        13: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        14: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        15: .line 695
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 16
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 16
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        16: .line 686
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        17: .line 687
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 5 /* ti */
        18: .line 689
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            aload 1 /* src */
            lload 2 /* position */
            getstatic sun.nio.ch.FileChannelImpl.nd:Lsun/nio/ch/NativeDispatcher;
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.positionLock:Ljava/lang/Object;
            invokestatic sun.nio.ch.IOUtil.write:(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;Ljava/lang/Object;)I
            istore 4 /* n */
        19: .line 690
            iload 4 /* n */
            bipush -3
            if_icmpne 20
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 18
        20: .line 691
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.normalize:(I)I
            istore 7
        21: .line 693
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        22: .line 694
            aload 0 /* this */
            iload 4 /* n */
            ifle 23
            iconst_1
            goto 24
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl
        23: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int top int
      StackMap stack: sun.nio.ch.FileChannelImpl int
        24: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        25: .line 695
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 26
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 26
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        26: .line 691
      StackMap locals:
      StackMap stack:
            iload 7
            ireturn
        27: .line 692
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int
      StackMap stack: java.lang.Throwable
            astore 6
        28: .line 693
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 5 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        29: .line 694
            aload 0 /* this */
            iload 4 /* n */
            ifle 30
            iconst_1
            goto 31
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl
        30: iconst_0
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.ByteBuffer long int int java.lang.Throwable
      StackMap stack: sun.nio.ch.FileChannelImpl int
        31: invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        32: .line 695
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 33
            iload 4 /* n */
            invokestatic sun.nio.ch.IOStatus.check:(I)Z
            ifne 33
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        33: .line 696
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 5 // int ti
        end local 4 // int n
        end local 2 // long position
        end local 1 // java.nio.ByteBuffer src
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   34     0      this  Lsun/nio/ch/FileChannelImpl;
            0   34     1       src  Ljava/nio/ByteBuffer;
            0   34     2  position  J
            8   34     4         n  I
            9   34     5        ti  I
      Exception table:
        from    to  target  type
           9    11      27  any
          17    21      27  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      src       
      position  

  private static void unmap(java.nio.MappedByteBuffer);
    descriptor: (Ljava/nio/MappedByteBuffer;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.nio.MappedByteBuffer bb
         0: .line 725
            aload 0 /* bb */
            checkcast sun.nio.ch.DirectBuffer
            invokeinterface sun.nio.ch.DirectBuffer.cleaner:()Lsun/misc/Cleaner;
            astore 1 /* cl */
        start local 1 // sun.misc.Cleaner cl
         1: .line 726
            aload 1 /* cl */
            ifnull 3
         2: .line 727
            aload 1 /* cl */
            invokevirtual sun.misc.Cleaner.clean:()V
         3: .line 728
      StackMap locals: sun.misc.Cleaner
      StackMap stack:
            return
        end local 1 // sun.misc.Cleaner cl
        end local 0 // java.nio.MappedByteBuffer bb
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    bb  Ljava/nio/MappedByteBuffer;
            1    4     1    cl  Lsun/misc/Cleaner;
    MethodParameters:
      Name  Flags
      bb    

  public java.nio.MappedByteBuffer map(java.nio.channels.FileChannel$MapMode, long, long);
    descriptor: (Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=19, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // java.nio.channels.FileChannel$MapMode mode
        start local 2 // long position
        start local 4 // long size
         0: .line 737
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 738
            lload 2 /* position */
            lconst_0
            lcmp
            ifge 3
         2: .line 739
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative position"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 740
      StackMap locals:
      StackMap stack:
            lload 4 /* size */
            lconst_0
            lcmp
            ifge 5
         4: .line 741
            new java.lang.IllegalArgumentException
            dup
            ldc "Negative size"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 742
      StackMap locals:
      StackMap stack:
            lload 2 /* position */
            lload 4 /* size */
            ladd
            lconst_0
            lcmp
            ifge 7
         6: .line 743
            new java.lang.IllegalArgumentException
            dup
            ldc "Position + size overflow"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 744
      StackMap locals:
      StackMap stack:
            lload 4 /* size */
            ldc 2147483647
            lcmp
            ifle 9
         8: .line 745
            new java.lang.IllegalArgumentException
            dup
            ldc "Size exceeds Integer.MAX_VALUE"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 746
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 6 /* imode */
        start local 6 // int imode
        10: .line 747
            aload 1 /* mode */
            getstatic java.nio.channels.FileChannel$MapMode.READ_ONLY:Ljava/nio/channels/FileChannel$MapMode;
            if_acmpne 12
        11: .line 748
            iconst_0
            istore 6 /* imode */
            goto 16
        12: .line 749
      StackMap locals: int
      StackMap stack:
            aload 1 /* mode */
            getstatic java.nio.channels.FileChannel$MapMode.READ_WRITE:Ljava/nio/channels/FileChannel$MapMode;
            if_acmpne 14
        13: .line 750
            iconst_1
            istore 6 /* imode */
            goto 16
        14: .line 751
      StackMap locals:
      StackMap stack:
            aload 1 /* mode */
            getstatic java.nio.channels.FileChannel$MapMode.PRIVATE:Ljava/nio/channels/FileChannel$MapMode;
            if_acmpne 16
        15: .line 752
            iconst_2
            istore 6 /* imode */
        16: .line 753
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 17
            iload 6 /* imode */
            ifge 17
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        17: .line 754
      StackMap locals:
      StackMap stack:
            aload 1 /* mode */
            getstatic java.nio.channels.FileChannel$MapMode.READ_ONLY:Ljava/nio/channels/FileChannel$MapMode;
            if_acmpeq 19
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 19
        18: .line 755
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
        19: .line 756
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 21
        20: .line 757
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
        21: .line 759
      StackMap locals:
      StackMap stack:
            ldc -1
            lstore 7 /* addr */
        start local 7 // long addr
        22: .line 760
            iconst_m1
            istore 9 /* ti */
        start local 9 // int ti
        23: .line 762
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
        24: .line 763
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 28
        25: .line 816
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        26: .line 817
            aload 0 /* this */
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        27: .line 764
            aconst_null
            areturn
        28: .line 765
      StackMap locals: long int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 9 /* ti */
        29: .line 766
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.size:()J
            lload 2 /* position */
            lload 4 /* size */
            ladd
            lcmp
            ifge 34
        30: .line 767
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 32
        31: .line 768
            new java.io.IOException
            dup
            ldc "Channel not open for writing - cannot extend file to required size"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 773
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            lload 2 /* position */
            lload 4 /* size */
            ladd
            invokevirtual sun.nio.ch.FileChannelImpl.truncate0:(Ljava/io/FileDescriptor;J)I
            istore 10 /* rv */
        start local 10 // int rv
        33: .line 774
            iload 10 /* rv */
            bipush -3
            if_icmpne 34
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 32
        end local 10 // int rv
        34: .line 776
      StackMap locals:
      StackMap stack:
            lload 4 /* size */
            lconst_0
            lcmp
            ifne 45
        35: .line 777
            lconst_0
            lstore 7 /* addr */
        36: .line 778
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifeq 37
            iload 6 /* imode */
            ifne 41
        37: .line 779
      StackMap locals:
      StackMap stack:
            iconst_0
            lconst_0
            aconst_null
            invokestatic sun.nio.ch.Util.newMappedByteBufferR:(IJLjava/lang/Runnable;)Ljava/nio/MappedByteBuffer;
            astore 18
        38: .line 816
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        39: .line 817
            aload 0 /* this */
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        40: .line 779
            aload 18
            areturn
        41: .line 781
      StackMap locals:
      StackMap stack:
            iconst_0
            lconst_0
            aconst_null
            invokestatic sun.nio.ch.Util.newMappedByteBuffer:(IJLjava/lang/Runnable;)Ljava/nio/MappedByteBuffer;
            astore 18
        42: .line 816
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        43: .line 817
            aload 0 /* this */
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        44: .line 781
            aload 18
            areturn
        45: .line 784
      StackMap locals:
      StackMap stack:
            lload 2 /* position */
            getstatic sun.nio.ch.FileChannelImpl.allocationGranularity:J
            lrem
            l2i
            istore 10 /* pagePosition */
        start local 10 // int pagePosition
        46: .line 785
            lload 2 /* position */
            iload 10 /* pagePosition */
            i2l
            lsub
            lstore 11 /* mapPosition */
        start local 11 // long mapPosition
        47: .line 786
            lload 4 /* size */
            iload 10 /* pagePosition */
            i2l
            ladd
            lstore 13 /* mapSize */
        start local 13 // long mapSize
        48: .line 789
            aload 0 /* this */
            iload 6 /* imode */
            lload 11 /* mapPosition */
            lload 13 /* mapSize */
            invokevirtual sun.nio.ch.FileChannelImpl.map0:(IJJ)J
            lstore 7 /* addr */
        49: .line 790
            goto 60
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.channels.FileChannel$MapMode long long int long int int long long
      StackMap stack: java.lang.OutOfMemoryError
        50: pop
        51: .line 793
            invokestatic java.lang.System.gc:()V
        52: .line 795
            ldc 100
            invokestatic java.lang.Thread.sleep:(J)V
        53: .line 796
            goto 56
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        54: pop
        55: .line 797
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        56: .line 800
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 6 /* imode */
            lload 11 /* mapPosition */
            lload 13 /* mapSize */
            invokevirtual sun.nio.ch.FileChannelImpl.map0:(IJJ)J
            lstore 7 /* addr */
        57: .line 801
            goto 60
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
        58: astore 15 /* y */
        start local 15 // java.lang.OutOfMemoryError y
        59: .line 803
            new java.io.IOException
            dup
            ldc "Map failed"
            aload 15 /* y */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 15 // java.lang.OutOfMemoryError y
        60: .line 807
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 61
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            ifne 61
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        61: .line 808
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 62
            lload 7 /* addr */
            getstatic sun.nio.ch.FileChannelImpl.allocationGranularity:J
            lrem
            lconst_0
            lcmp
            ifeq 62
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        62: .line 809
      StackMap locals:
      StackMap stack:
            lload 4 /* size */
            l2i
            istore 15 /* isize */
        start local 15 // int isize
        63: .line 810
            new sun.nio.ch.FileChannelImpl$Unmapper
            dup
            lload 7 /* addr */
            lload 4 /* size */
            iload 10 /* pagePosition */
            i2l
            ladd
            invokespecial sun.nio.ch.FileChannelImpl$Unmapper.<init>:(JJ)V
            astore 16 /* um */
        start local 16 // sun.nio.ch.FileChannelImpl$Unmapper um
        64: .line 811
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifeq 65
            iload 6 /* imode */
            ifne 69
        65: .line 812
      StackMap locals: int sun.nio.ch.FileChannelImpl$Unmapper
      StackMap stack:
            iload 15 /* isize */
            lload 7 /* addr */
            iload 10 /* pagePosition */
            i2l
            ladd
            aload 16 /* um */
            invokestatic sun.nio.ch.Util.newMappedByteBufferR:(IJLjava/lang/Runnable;)Ljava/nio/MappedByteBuffer;
            astore 18
        66: .line 816
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        67: .line 817
            aload 0 /* this */
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        68: .line 812
            aload 18
            areturn
        69: .line 814
      StackMap locals:
      StackMap stack:
            iload 15 /* isize */
            lload 7 /* addr */
            iload 10 /* pagePosition */
            i2l
            ladd
            aload 16 /* um */
            invokestatic sun.nio.ch.Util.newMappedByteBuffer:(IJLjava/lang/Runnable;)Ljava/nio/MappedByteBuffer;
            astore 18
        70: .line 816
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        71: .line 817
            aload 0 /* this */
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        72: .line 814
            aload 18
            areturn
        end local 16 // sun.nio.ch.FileChannelImpl$Unmapper um
        end local 15 // int isize
        end local 13 // long mapSize
        end local 11 // long mapPosition
        end local 10 // int pagePosition
        73: .line 815
      StackMap locals: sun.nio.ch.FileChannelImpl java.nio.channels.FileChannel$MapMode long long int long int
      StackMap stack: java.lang.Throwable
            astore 17
        74: .line 816
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        75: .line 817
            aload 0 /* this */
            lload 7 /* addr */
            invokestatic sun.nio.ch.IOStatus.checkAll:(J)Z
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        76: .line 818
            aload 17
            athrow
        end local 9 // int ti
        end local 7 // long addr
        end local 6 // int imode
        end local 4 // long size
        end local 2 // long position
        end local 1 // java.nio.channels.FileChannel$MapMode mode
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   77     0          this  Lsun/nio/ch/FileChannelImpl;
            0   77     1          mode  Ljava/nio/channels/FileChannel$MapMode;
            0   77     2      position  J
            0   77     4          size  J
           10   77     6         imode  I
           22   77     7          addr  J
           23   77     9            ti  I
           33   34    10            rv  I
           46   73    10  pagePosition  I
           47   73    11   mapPosition  J
           48   73    13       mapSize  J
           59   60    15             y  Ljava/lang/OutOfMemoryError;
           63   73    15         isize  I
           64   73    16            um  Lsun/nio/ch/FileChannelImpl$Unmapper;
      Exception table:
        from    to  target  type
          48    49      50  Class java.lang.OutOfMemoryError
          52    53      54  Class java.lang.InterruptedException
          56    57      58  Class java.lang.OutOfMemoryError
          23    25      73  any
          28    38      73  any
          41    42      73  any
          45    66      73  any
          69    70      73  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      mode      
      position  
      size      

  private static boolean isSharedFileLockTable();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 843
            getstatic sun.nio.ch.FileChannelImpl.propertyChecked:Z
            ifne 15
         1: .line 844
            ldc Lsun/nio/ch/FileChannelImpl;
            dup
            astore 0
            monitorenter
         2: .line 845
            getstatic sun.nio.ch.FileChannelImpl.propertyChecked:Z
            ifne 11
         3: .line 847
            new sun.security.action.GetPropertyAction
            dup
         4: .line 848
            ldc "sun.nio.ch.disableSystemWideOverlappingFileLockCheck"
         5: .line 847
            invokespecial sun.security.action.GetPropertyAction.<init>:(Ljava/lang/String;)V
         6: .line 846
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* value */
        start local 1 // java.lang.String value
         7: .line 849
            aload 1 /* value */
            ifnull 8
            aload 1 /* value */
            ldc "false"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            iconst_0
            goto 9
      StackMap locals: java.lang.Class java.lang.String
      StackMap stack:
         8: iconst_1
      StackMap locals:
      StackMap stack: int
         9: putstatic sun.nio.ch.FileChannelImpl.isSharedFileLockTable:Z
        10: .line 850
            iconst_1
            putstatic sun.nio.ch.FileChannelImpl.propertyChecked:Z
        end local 1 // java.lang.String value
        11: .line 844
      StackMap locals:
      StackMap stack:
            aload 0
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 0
            monitorexit
        14: athrow
        15: .line 854
      StackMap locals:
      StackMap stack:
            getstatic sun.nio.ch.FileChannelImpl.isSharedFileLockTable:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            7   11     1  value  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2    12      13  any
          13    14      13  any

  private sun.nio.ch.FileChannelImpl$FileLockTable fileLockTable();
    descriptor: ()Lsun/nio/ch/FileChannelImpl$FileLockTable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.nio.ch.FileChannelImpl this
         0: .line 858
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            ifnonnull 11
         1: .line 859
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         2: .line 860
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            ifnonnull 7
         3: .line 861
            aload 0 /* this */
            invokestatic sun.nio.ch.FileChannelImpl.isSharedFileLockTable:()Z
            ifeq 5
         4: .line 862
            new sun.nio.ch.FileChannelImpl$SharedFileLockTable
            dup
            aload 0 /* this */
            invokespecial sun.nio.ch.FileChannelImpl$SharedFileLockTable.<init>:(Lsun/nio/ch/FileChannelImpl;)V
            goto 6
      StackMap locals: sun.nio.ch.FileChannelImpl sun.nio.ch.FileChannelImpl
      StackMap stack: sun.nio.ch.FileChannelImpl
         5: new sun.nio.ch.FileChannelImpl$SimpleFileLockTable
            dup
            invokespecial sun.nio.ch.FileChannelImpl$SimpleFileLockTable.<init>:()V
         6: .line 861
      StackMap locals: sun.nio.ch.FileChannelImpl sun.nio.ch.FileChannelImpl
      StackMap stack: sun.nio.ch.FileChannelImpl sun.nio.ch.FileChannelImpl$FileLockTable
            putfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
         7: .line 859
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 866
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            areturn
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/nio/ch/FileChannelImpl;
      Exception table:
        from    to  target  type
           2     8       9  any
           9    10       9  any

  public java.nio.channels.FileLock lock(long, long, boolean);
    descriptor: (JJZ)Ljava/nio/channels/FileLock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=14, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long position
        start local 3 // long size
        start local 5 // boolean shared
         0: .line 872
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 873
            iload 5 /* shared */
            ifeq 3
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 3
         2: .line 874
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         3: .line 875
      StackMap locals:
      StackMap stack:
            iload 5 /* shared */
            ifne 5
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 5
         4: .line 876
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         5: .line 877
      StackMap locals:
      StackMap stack:
            new sun.nio.ch.FileLockImpl
            dup
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokespecial sun.nio.ch.FileLockImpl.<init>:(Ljava/nio/channels/FileChannel;JJZ)V
            astore 6 /* fli */
        start local 6 // sun.nio.ch.FileLockImpl fli
         6: .line 878
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.fileLockTable:()Lsun/nio/ch/FileChannelImpl$FileLockTable;
            astore 7 /* flt */
        start local 7 // sun.nio.ch.FileChannelImpl$FileLockTable flt
         7: .line 879
            aload 7 /* flt */
            aload 6 /* fli */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.add:(Ljava/nio/channels/FileLock;)V
         8: .line 880
            iconst_1
            istore 8 /* i */
        start local 8 // boolean i
         9: .line 881
            iconst_m1
            istore 9 /* ti */
        start local 9 // int ti
        10: .line 883
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.begin:()V
        11: .line 884
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.isOpen:()Z
            ifne 18
        12: .line 903
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        13: .line 905
            aload 0 /* this */
            iload 8 /* i */
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        14: .line 906
            goto 17
      StackMap locals: sun.nio.ch.FileChannelImpl long long int sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int int
      StackMap stack: java.nio.channels.ClosedByInterruptException
        15: pop
        16: .line 907
            new java.nio.channels.FileLockInterruptionException
            dup
            invokespecial java.nio.channels.FileLockInterruptionException.<init>:()V
            athrow
        17: .line 885
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        18: .line 886
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            invokevirtual sun.nio.ch.NativeThreadSet.add:()I
            istore 9 /* ti */
        19: .line 887
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_1
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokevirtual sun.nio.ch.FileChannelImpl.lock0:(Ljava/io/FileDescriptor;ZJJZ)I
            istore 10 /* result */
        start local 10 // int result
        20: .line 888
            iload 10 /* result */
            iconst_1
            if_icmpne 33
        21: .line 889
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 22
            iload 5 /* shared */
            ifne 22
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        22: .line 890
      StackMap locals: int
      StackMap stack:
            new sun.nio.ch.FileLockImpl
            dup
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
        23: .line 891
            iconst_0
        24: .line 890
            invokespecial sun.nio.ch.FileLockImpl.<init>:(Ljava/nio/channels/FileChannel;JJZ)V
            astore 11 /* fli2 */
        start local 11 // sun.nio.ch.FileLockImpl fli2
        25: .line 892
            aload 7 /* flt */
            aload 6 /* fli */
            aload 11 /* fli2 */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.replace:(Ljava/nio/channels/FileLock;Ljava/nio/channels/FileLock;)V
        26: .line 893
            aload 11 /* fli2 */
            astore 13
        27: .line 903
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        28: .line 905
            aload 0 /* this */
            iload 8 /* i */
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        29: .line 906
            goto 32
      StackMap locals: sun.nio.ch.FileChannelImpl long long int sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int int int sun.nio.ch.FileLockImpl top java.nio.channels.FileLock
      StackMap stack: java.nio.channels.ClosedByInterruptException
        30: pop
        31: .line 907
            new java.nio.channels.FileLockInterruptionException
            dup
            invokespecial java.nio.channels.FileLockInterruptionException.<init>:()V
            athrow
        32: .line 893
      StackMap locals:
      StackMap stack:
            aload 13
            areturn
        end local 11 // sun.nio.ch.FileLockImpl fli2
        33: .line 895
      StackMap locals: sun.nio.ch.FileChannelImpl long long int sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int int int
      StackMap stack:
            iload 10 /* result */
            iconst_2
            if_icmpeq 34
            iload 10 /* result */
            iconst_m1
            if_icmpne 47
        34: .line 896
      StackMap locals:
      StackMap stack:
            aload 7 /* flt */
            aload 6 /* fli */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.remove:(Ljava/nio/channels/FileLock;)V
        35: .line 897
            iconst_0
            istore 8 /* i */
        end local 10 // int result
        36: .line 899
            goto 47
      StackMap locals: sun.nio.ch.FileChannelImpl long long int sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int int
      StackMap stack: java.io.IOException
        37: astore 10 /* e */
        start local 10 // java.io.IOException e
        38: .line 900
            aload 7 /* flt */
            aload 6 /* fli */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.remove:(Ljava/nio/channels/FileLock;)V
        39: .line 901
            aload 10 /* e */
            athrow
        end local 10 // java.io.IOException e
        40: .line 902
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 12
        41: .line 903
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        42: .line 905
            aload 0 /* this */
            iload 8 /* i */
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        43: .line 906
            goto 46
      StackMap locals: sun.nio.ch.FileChannelImpl long long int sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int int top top java.lang.Throwable
      StackMap stack: java.nio.channels.ClosedByInterruptException
        44: pop
        45: .line 907
            new java.nio.channels.FileLockInterruptionException
            dup
            invokespecial java.nio.channels.FileLockInterruptionException.<init>:()V
            athrow
        46: .line 909
      StackMap locals:
      StackMap stack:
            aload 12
            athrow
        47: .line 903
      StackMap locals: sun.nio.ch.FileChannelImpl long long int sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int int
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
            iload 9 /* ti */
            invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
        48: .line 905
            aload 0 /* this */
            iload 8 /* i */
            invokevirtual sun.nio.ch.FileChannelImpl.end:(Z)V
        49: .line 906
            goto 52
      StackMap locals:
      StackMap stack: java.nio.channels.ClosedByInterruptException
        50: pop
        51: .line 907
            new java.nio.channels.FileLockInterruptionException
            dup
            invokespecial java.nio.channels.FileLockInterruptionException.<init>:()V
            athrow
        52: .line 910
      StackMap locals:
      StackMap stack:
            aload 6 /* fli */
            areturn
        end local 9 // int ti
        end local 8 // boolean i
        end local 7 // sun.nio.ch.FileChannelImpl$FileLockTable flt
        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.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   53     0      this  Lsun/nio/ch/FileChannelImpl;
            0   53     1  position  J
            0   53     3      size  J
            0   53     5    shared  Z
            6   53     6       fli  Lsun/nio/ch/FileLockImpl;
            7   53     7       flt  Lsun/nio/ch/FileChannelImpl$FileLockTable;
            9   53     8         i  Z
           10   53     9        ti  I
           20   36    10    result  I
           25   33    11      fli2  Lsun/nio/ch/FileLockImpl;
           38   40    10         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          13    14      15  Class java.nio.channels.ClosedByInterruptException
          28    29      30  Class java.nio.channels.ClosedByInterruptException
          10    12      37  Class java.io.IOException
          18    27      37  Class java.io.IOException
          33    36      37  Class java.io.IOException
          10    12      40  any
          18    27      40  any
          33    40      40  any
          42    43      44  Class java.nio.channels.ClosedByInterruptException
          48    49      50  Class java.nio.channels.ClosedByInterruptException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      size      
      shared    

  public java.nio.channels.FileLock tryLock(long, long, boolean);
    descriptor: (JJZ)Ljava/nio/channels/FileLock;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=10, args_size=4
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // long position
        start local 3 // long size
        start local 5 // boolean shared
         0: .line 916
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 917
            iload 5 /* shared */
            ifeq 3
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.readable:Z
            ifne 3
         2: .line 918
            new java.nio.channels.NonReadableChannelException
            dup
            invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
            athrow
         3: .line 919
      StackMap locals:
      StackMap stack:
            iload 5 /* shared */
            ifne 5
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.writable:Z
            ifne 5
         4: .line 920
            new java.nio.channels.NonWritableChannelException
            dup
            invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
            athrow
         5: .line 921
      StackMap locals:
      StackMap stack:
            new sun.nio.ch.FileLockImpl
            dup
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokespecial sun.nio.ch.FileLockImpl.<init>:(Ljava/nio/channels/FileChannel;JJZ)V
            astore 6 /* fli */
        start local 6 // sun.nio.ch.FileLockImpl fli
         6: .line 922
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.fileLockTable:()Lsun/nio/ch/FileChannelImpl$FileLockTable;
            astore 7 /* flt */
        start local 7 // sun.nio.ch.FileChannelImpl$FileLockTable flt
         7: .line 923
            aload 7 /* flt */
            aload 6 /* fli */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.add:(Ljava/nio/channels/FileLock;)V
         8: .line 924
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd:Ljava/io/FileDescriptor;
            iconst_0
            lload 1 /* position */
            lload 3 /* size */
            iload 5 /* shared */
            invokevirtual sun.nio.ch.FileChannelImpl.lock0:(Ljava/io/FileDescriptor;ZJJZ)I
            istore 8 /* result */
        start local 8 // int result
         9: .line 925
            iload 8 /* result */
            iconst_m1
            if_icmpne 12
        10: .line 926
            aload 7 /* flt */
            aload 6 /* fli */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.remove:(Ljava/nio/channels/FileLock;)V
        11: .line 927
            aconst_null
            areturn
        12: .line 929
      StackMap locals: sun.nio.ch.FileLockImpl sun.nio.ch.FileChannelImpl$FileLockTable int
      StackMap stack:
            iload 8 /* result */
            iconst_1
            if_icmpne 19
        13: .line 930
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 14
            iload 5 /* shared */
            ifne 14
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        14: .line 931
      StackMap locals:
      StackMap stack:
            new sun.nio.ch.FileLockImpl
            dup
            aload 0 /* this */
            lload 1 /* position */
            lload 3 /* size */
        15: .line 932
            iconst_0
        16: .line 931
            invokespecial sun.nio.ch.FileLockImpl.<init>:(Ljava/nio/channels/FileChannel;JJZ)V
            astore 9 /* fli2 */
        start local 9 // sun.nio.ch.FileLockImpl fli2
        17: .line 933
            aload 7 /* flt */
            aload 6 /* fli */
            aload 9 /* fli2 */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.replace:(Ljava/nio/channels/FileLock;Ljava/nio/channels/FileLock;)V
        18: .line 934
            aload 9 /* fli2 */
            areturn
        end local 9 // sun.nio.ch.FileLockImpl fli2
        19: .line 936
      StackMap locals:
      StackMap stack:
            aload 6 /* fli */
            areturn
        end local 8 // int result
        end local 7 // sun.nio.ch.FileChannelImpl$FileLockTable flt
        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.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lsun/nio/ch/FileChannelImpl;
            0   20     1  position  J
            0   20     3      size  J
            0   20     5    shared  Z
            6   20     6       fli  Lsun/nio/ch/FileLockImpl;
            7   20     7       flt  Lsun/nio/ch/FileChannelImpl$FileLockTable;
            9   20     8    result  I
           17   19     9      fli2  Lsun/nio/ch/FileLockImpl;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      position  
      size      
      shared    

  void release(sun.nio.ch.FileLockImpl);
    descriptor: (Lsun/nio/ch/FileLockImpl;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // sun.nio.ch.FileChannelImpl this
        start local 1 // sun.nio.ch.FileLockImpl fli
         0: .line 940
            aload 0 /* this */
            invokevirtual sun.nio.ch.FileChannelImpl.ensureOpen:()V
         1: .line 941
            aload 0 /* this */
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fd: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.FileChannelImpl.release0:(Ljava/io/FileDescriptor;JJ)V
         2: .line 942
            getstatic sun.nio.ch.FileChannelImpl.$assertionsDisabled:Z
            ifne 3
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            ifnonnull 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 943
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.nio.ch.FileChannelImpl.fileLockTable:Lsun/nio/ch/FileChannelImpl$FileLockTable;
            aload 1 /* fli */
            invokeinterface sun.nio.ch.FileChannelImpl$FileLockTable.remove:(Ljava/nio/channels/FileLock;)V
         4: .line 944
            return
        end local 1 // sun.nio.ch.FileLockImpl fli
        end local 0 // sun.nio.ch.FileChannelImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lsun/nio/ch/FileChannelImpl;
            0    5     1   fli  Lsun/nio/ch/FileLockImpl;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fli   

  native int lock0(java.io.FileDescriptor, boolean, long, long, boolean);
    descriptor: (Ljava/io/FileDescriptor;ZJJZ)I
    flags: (0x0100) ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      fd        
      blocking  
      pos       
      size      
      shared    

  native void release0(java.io.FileDescriptor, long, long);
    descriptor: (Ljava/io/FileDescriptor;JJ)V
    flags: (0x0100) ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      pos   
      size  

  private native long map0(int, long, long);
    descriptor: (IJJ)J
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      prot      
      position  
      length    

  private static native int unmap0(long, long);
    descriptor: (JJ)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
         Name  Flags
      address  
      length   

  private native int force0(java.io.FileDescriptor, boolean);
    descriptor: (Ljava/io/FileDescriptor;Z)I
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
          Name  Flags
      fd        
      metaData  

  private native int truncate0(java.io.FileDescriptor, long);
    descriptor: (Ljava/io/FileDescriptor;J)I
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
      Name  Flags
      fd    
      size  

  private native long transferTo0(int, long, long, int);
    descriptor: (IJJI)J
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
          Name  Flags
      src       
      position  
      count     
      dst       

  private native long position0(java.io.FileDescriptor, long);
    descriptor: (Ljava/io/FileDescriptor;J)J
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
        Name  Flags
      fd      
      offset  

  private native long size0(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)J
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
      Name  Flags
      fd    

  private static native long initIDs();
    descriptor: ()J
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
}
SourceFile: "FileChannelImpl.java"
NestMembers:
  sun.nio.ch.FileChannelImpl$1  sun.nio.ch.FileChannelImpl$FileLockReference  sun.nio.ch.FileChannelImpl$FileLockTable  sun.nio.ch.FileChannelImpl$FileLockTable$Releaser  sun.nio.ch.FileChannelImpl$SharedFileLockTable  sun.nio.ch.FileChannelImpl$SimpleFileLockTable  sun.nio.ch.FileChannelImpl$Unmapper
InnerClasses:
  public MapMode = java.nio.channels.FileChannel$MapMode of java.nio.channels.FileChannel
  sun.nio.ch.FileChannelImpl$1
  private FileLockReference = sun.nio.ch.FileChannelImpl$FileLockReference of sun.nio.ch.FileChannelImpl
  private abstract FileLockTable = sun.nio.ch.FileChannelImpl$FileLockTable of sun.nio.ch.FileChannelImpl
  public abstract Releaser = sun.nio.ch.FileChannelImpl$FileLockTable$Releaser of sun.nio.ch.FileChannelImpl$FileLockTable
  private SharedFileLockTable = sun.nio.ch.FileChannelImpl$SharedFileLockTable of sun.nio.ch.FileChannelImpl
  private SimpleFileLockTable = sun.nio.ch.FileChannelImpl$SimpleFileLockTable of sun.nio.ch.FileChannelImpl
  private Unmapper = sun.nio.ch.FileChannelImpl$Unmapper of sun.nio.ch.FileChannelImpl