class org.h2.store.fs.FileNioMemData
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.h2.store.fs.FileNioMemData
  super_class: java.lang.Object
{
  private static final int CACHE_MIN_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

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

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

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

  private static final java.nio.ByteBuffer COMPRESSED_EMPTY_BLOCK;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.ThreadLocal<org.h2.compress.CompressLZF> LZF_THREAD_LOCAL;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Lorg/h2/compress/CompressLZF;>;

  private static final java.lang.ThreadLocal<byte[]> COMPRESS_OUT_BUF_THREAD_LOCAL;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<[B>;

  final int nameHashCode;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  private final org.h2.store.fs.FileNioMemData$CompressLaterCache<org.h2.store.fs.FileNioMemData$CompressItem, org.h2.store.fs.FileNioMemData$CompressItem> compressLaterCache;
    descriptor: Lorg/h2/store/fs/FileNioMemData$CompressLaterCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/h2/store/fs/FileNioMemData$CompressLaterCache<Lorg/h2/store/fs/FileNioMemData$CompressItem;Lorg/h2/store/fs/FileNioMemData$CompressItem;>;

  private java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private final boolean compress;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final float compressLaterCachePercent;
    descriptor: F
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long length;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private java.util.concurrent.atomic.AtomicReference<java.nio.ByteBuffer>[] buffers;
    descriptor: [Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0002) ACC_PRIVATE
    Signature: [Ljava/util/concurrent/atomic/AtomicReference<Ljava/nio/ByteBuffer;>;

  private long lastModified;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

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

  private int sharedLockCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final java.util.concurrent.locks.ReentrantReadWriteLock rwLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantReadWriteLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=0
         0: .line 439
            new org.h2.store.fs.FileNioMemData$1
            dup
            invokespecial org.h2.store.fs.FileNioMemData$1.<init>:()V
         1: .line 438
            putstatic org.h2.store.fs.FileNioMemData.LZF_THREAD_LOCAL:Ljava/lang/ThreadLocal;
         2: .line 447
            new org.h2.store.fs.FileNioMemData$2
            dup
            invokespecial org.h2.store.fs.FileNioMemData$2.<init>:()V
         3: .line 446
            putstatic org.h2.store.fs.FileNioMemData.COMPRESS_OUT_BUF_THREAD_LOCAL:Ljava/lang/ThreadLocal;
         4: .line 474
            ldc 65536
            newarray 8
            astore 0 /* n */
        start local 0 // byte[] n
         5: .line 475
            ldc 131072
            newarray 8
            astore 1 /* output */
        start local 1 // byte[] output
         6: .line 476
            new org.h2.compress.CompressLZF
            dup
            invokespecial org.h2.compress.CompressLZF.<init>:()V
            aload 0 /* n */
            ldc 65536
            aload 1 /* output */
            iconst_0
            invokevirtual org.h2.compress.CompressLZF.compress:([BI[BI)I
            istore 2 /* len */
        start local 2 // int len
         7: .line 477
            iload 2 /* len */
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            putstatic org.h2.store.fs.FileNioMemData.COMPRESSED_EMPTY_BLOCK:Ljava/nio/ByteBuffer;
         8: .line 478
            getstatic org.h2.store.fs.FileNioMemData.COMPRESSED_EMPTY_BLOCK:Ljava/nio/ByteBuffer;
            aload 1 /* output */
            iconst_0
            iload 2 /* len */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
        end local 2 // int len
        end local 1 // byte[] output
        end local 0 // byte[] n
         9: .line 479
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            5    9     0       n  [B
            6    9     1  output  [B
            7    9     2     len  I

  void <init>(java.lang.String, boolean, float);
    descriptor: (Ljava/lang/String;ZF)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // java.lang.String name
        start local 2 // boolean compress
        start local 3 // float compressLaterCachePercent
         0: .line 482
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 459
            aload 0 /* this */
         2: .line 460
            new org.h2.store.fs.FileNioMemData$CompressLaterCache
            dup
            bipush 8
            invokespecial org.h2.store.fs.FileNioMemData$CompressLaterCache.<init>:(I)V
            putfield org.h2.store.fs.FileNioMemData.compressLaterCache:Lorg/h2/store/fs/FileNioMemData$CompressLaterCache;
         3: .line 471
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantReadWriteLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantReadWriteLock.<init>:()V
            putfield org.h2.store.fs.FileNioMemData.rwLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
         4: .line 483
            aload 0 /* this */
            aload 1 /* name */
            putfield org.h2.store.fs.FileNioMemData.name:Ljava/lang/String;
         5: .line 484
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual java.lang.String.hashCode:()I
            putfield org.h2.store.fs.FileNioMemData.nameHashCode:I
         6: .line 485
            aload 0 /* this */
            iload 2 /* compress */
            putfield org.h2.store.fs.FileNioMemData.compress:Z
         7: .line 486
            aload 0 /* this */
            fload 3 /* compressLaterCachePercent */
            putfield org.h2.store.fs.FileNioMemData.compressLaterCachePercent:F
         8: .line 487
            aload 0 /* this */
            iconst_0
            anewarray java.util.concurrent.atomic.AtomicReference
            putfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
         9: .line 488
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield org.h2.store.fs.FileNioMemData.lastModified:J
        10: .line 489
            return
        end local 3 // float compressLaterCachePercent
        end local 2 // boolean compress
        end local 1 // java.lang.String name
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   11     0                       this  Lorg/h2/store/fs/FileNioMemData;
            0   11     1                       name  Ljava/lang/String;
            0   11     2                   compress  Z
            0   11     3  compressLaterCachePercent  F
    MethodParameters:
                           Name  Flags
      name                       
      compress                   
      compressLaterCachePercent  

  synchronized boolean lockExclusive();
    descriptor: ()Z
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 497
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.sharedLockCount:I
            ifgt 1
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.isLockedExclusive:Z
            ifeq 2
         1: .line 498
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         2: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.h2.store.fs.FileNioMemData.isLockedExclusive:Z
         3: .line 501
            iconst_1
            ireturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/store/fs/FileNioMemData;

  synchronized boolean lockShared();
    descriptor: ()Z
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 510
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.isLockedExclusive:Z
            ifeq 2
         1: .line 511
            iconst_0
            ireturn
         2: .line 513
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.h2.store.fs.FileNioMemData.sharedLockCount:I
            iconst_1
            iadd
            putfield org.h2.store.fs.FileNioMemData.sharedLockCount:I
         3: .line 514
            iconst_1
            ireturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/store/fs/FileNioMemData;

  synchronized void unlock();
    descriptor: ()V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 521
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.isLockedExclusive:Z
            ifeq 3
         1: .line 522
            aload 0 /* this */
            iconst_0
            putfield org.h2.store.fs.FileNioMemData.isLockedExclusive:Z
         2: .line 523
            goto 4
         3: .line 524
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.sharedLockCount:I
            iconst_1
            isub
            invokestatic java.lang.Math.max:(II)I
            putfield org.h2.store.fs.FileNioMemData.sharedLockCount:I
         4: .line 526
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/h2/store/fs/FileNioMemData;

  private void addToCompressLaterCache(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // int page
         0: .line 598
            new org.h2.store.fs.FileNioMemData$CompressItem
            dup
            aload 0 /* this */
            iload 1 /* page */
            invokespecial org.h2.store.fs.FileNioMemData$CompressItem.<init>:(Lorg/h2/store/fs/FileNioMemData;I)V
            astore 2 /* c */
        start local 2 // org.h2.store.fs.FileNioMemData$CompressItem c
         1: .line 599
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.compressLaterCache:Lorg/h2/store/fs/FileNioMemData$CompressLaterCache;
            aload 2 /* c */
            aload 2 /* c */
            invokevirtual org.h2.store.fs.FileNioMemData$CompressLaterCache.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 600
            return
        end local 2 // org.h2.store.fs.FileNioMemData$CompressItem c
        end local 1 // int page
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/store/fs/FileNioMemData;
            0    3     1  page  I
            1    3     2     c  Lorg/h2/store/fs/FileNioMemData$CompressItem;
    MethodParameters:
      Name  Flags
      page  

  private java.nio.ByteBuffer expandPage(int);
    descriptor: (I)Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // int page
         0: .line 603
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            iload 1 /* page */
            aaload
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 2 /* d */
        start local 2 // java.nio.ByteBuffer d
         1: .line 604
            aload 2 /* d */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            ldc 65536
            if_icmpne 3
         2: .line 606
            aload 2 /* d */
            areturn
         3: .line 608
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            aload 2 /* d */
            dup
            astore 3
            monitorenter
         4: .line 609
            aload 2 /* d */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            ldc 65536
            if_icmpne 7
         5: .line 610
            aload 2 /* d */
            aload 3
            monitorexit
         6: areturn
         7: .line 612
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            ldc 65536
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            astore 4 /* out */
        start local 4 // java.nio.ByteBuffer out
         8: .line 613
            aload 2 /* d */
            getstatic org.h2.store.fs.FileNioMemData.COMPRESSED_EMPTY_BLOCK:Ljava/nio/ByteBuffer;
            if_acmpeq 11
         9: .line 614
            aload 2 /* d */
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        10: .line 615
            aload 2 /* d */
            aload 4 /* out */
            invokestatic org.h2.compress.CompressLZF.expand:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)V
        11: .line 617
      StackMap locals: java.nio.ByteBuffer
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            iload 1 /* page */
            aaload
            aload 2 /* d */
            aload 4 /* out */
            invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        12: .line 618
            aload 4 /* out */
            aload 3
            monitorexit
        13: areturn
        end local 4 // java.nio.ByteBuffer out
        14: .line 608
      StackMap locals: org.h2.store.fs.FileNioMemData int java.nio.ByteBuffer java.nio.ByteBuffer
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        15: athrow
        end local 2 // java.nio.ByteBuffer d
        end local 1 // int page
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lorg/h2/store/fs/FileNioMemData;
            0   16     1  page  I
            1   16     2     d  Ljava/nio/ByteBuffer;
            8   14     4   out  Ljava/nio/ByteBuffer;
      Exception table:
        from    to  target  type
           4     6      14  any
           7    13      14  any
          14    15      14  any
    MethodParameters:
      Name  Flags
      page  

  void compressPage(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // int page
         0: .line 628
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            iload 1 /* page */
            aaload
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 2 /* d */
        start local 2 // java.nio.ByteBuffer d
         1: .line 629
            aload 2 /* d */
            dup
            astore 3
            monitorenter
         2: .line 630
            aload 2 /* d */
            invokevirtual java.nio.ByteBuffer.capacity:()I
            ldc 65536
            if_icmpeq 5
         3: .line 632
            aload 3
            monitorexit
         4: return
         5: .line 634
      StackMap locals: java.nio.ByteBuffer java.nio.ByteBuffer
      StackMap stack:
            getstatic org.h2.store.fs.FileNioMemData.COMPRESS_OUT_BUF_THREAD_LOCAL:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast byte[]
            astore 4 /* compressOutputBuffer */
        start local 4 // byte[] compressOutputBuffer
         6: .line 635
            getstatic org.h2.store.fs.FileNioMemData.LZF_THREAD_LOCAL:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast org.h2.compress.CompressLZF
            aload 2 /* d */
            iconst_0
            aload 4 /* compressOutputBuffer */
            iconst_0
            invokevirtual org.h2.compress.CompressLZF.compress:(Ljava/nio/ByteBuffer;I[BI)I
            istore 5 /* len */
        start local 5 // int len
         7: .line 636
            iload 5 /* len */
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            astore 6 /* out */
        start local 6 // java.nio.ByteBuffer out
         8: .line 637
            aload 6 /* out */
            aload 4 /* compressOutputBuffer */
            iconst_0
            iload 5 /* len */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         9: .line 638
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            iload 1 /* page */
            aaload
            aload 2 /* d */
            aload 6 /* out */
            invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        end local 6 // java.nio.ByteBuffer out
        end local 5 // int len
        end local 4 // byte[] compressOutputBuffer
        10: .line 629
            aload 3
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 3
            monitorexit
        13: athrow
        14: .line 640
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.nio.ByteBuffer d
        end local 1 // int page
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                  this  Lorg/h2/store/fs/FileNioMemData;
            0   15     1                  page  I
            1   15     2                     d  Ljava/nio/ByteBuffer;
            6   10     4  compressOutputBuffer  [B
            7   10     5                   len  I
            8   10     6                   out  Ljava/nio/ByteBuffer;
      Exception table:
        from    to  target  type
           2     4      12  any
           5    11      12  any
          12    13      12  any
    MethodParameters:
      Name  Flags
      page  

  void touch(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // boolean openReadOnly
         0: .line 648
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.isReadOnly:Z
            ifne 1
            iload 1 /* openReadOnly */
            ifeq 2
         1: .line 649
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "Read only"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 651
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic java.lang.System.currentTimeMillis:()J
            putfield org.h2.store.fs.FileNioMemData.lastModified:J
         3: .line 652
            return
        end local 1 // boolean openReadOnly
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/h2/store/fs/FileNioMemData;
            0    4     1  openReadOnly  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      openReadOnly  

  long length();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 660
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.length:J
            lreturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/fs/FileNioMemData;

  void truncate(long);
    descriptor: (J)V
    flags: (0x0000) 
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // long newLength
         0: .line 669
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.rwLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock:()V
         1: .line 671
            aload 0 /* this */
            lload 1 /* newLength */
            invokevirtual org.h2.store.fs.FileNioMemData.changeLength:(J)V
         2: .line 672
            lload 1 /* newLength */
            ldc 65536
            invokestatic org.h2.util.MathUtils.roundUpLong:(JJ)J
            lstore 3 /* end */
        start local 3 // long end
         3: .line 673
            lload 3 /* end */
            lload 1 /* newLength */
            lcmp
            ifeq 17
         4: .line 674
            lload 1 /* newLength */
            bipush 16
            lushr
            l2i
            istore 5 /* lastPage */
        start local 5 // int lastPage
         5: .line 675
            aload 0 /* this */
            iload 5 /* lastPage */
            invokevirtual org.h2.store.fs.FileNioMemData.expandPage:(I)Ljava/nio/ByteBuffer;
            astore 6 /* d */
        start local 6 // java.nio.ByteBuffer d
         6: .line 676
            lload 1 /* newLength */
            ldc 65535
            land
            l2i
            istore 7 /* i */
        start local 7 // int i
         7: goto 10
         8: .line 677
      StackMap locals: org.h2.store.fs.FileNioMemData long long int java.nio.ByteBuffer int
      StackMap stack:
            aload 6 /* d */
            iload 7 /* i */
            iconst_0
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
         9: .line 676
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 7 /* i */
            ldc 65536
            if_icmplt 8
        end local 7 // int i
        11: .line 679
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.compress:Z
            ifeq 17
        12: .line 680
            aload 0 /* this */
            iload 5 /* lastPage */
            invokevirtual org.h2.store.fs.FileNioMemData.addToCompressLaterCache:(I)V
        end local 6 // java.nio.ByteBuffer d
        end local 5 // int lastPage
        end local 3 // long end
        13: .line 683
            goto 17
      StackMap locals: org.h2.store.fs.FileNioMemData long
      StackMap stack: java.lang.Throwable
        14: astore 8
        15: .line 684
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.rwLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
        16: .line 685
            aload 8
            athrow
        17: .line 684
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.rwLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock:()V
        18: .line 686
            return
        end local 1 // long newLength
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Lorg/h2/store/fs/FileNioMemData;
            0   19     1  newLength  J
            3   13     3        end  J
            5   13     5   lastPage  I
            6   13     6          d  Ljava/nio/ByteBuffer;
            7   11     7          i  I
      Exception table:
        from    to  target  type
           1    14      14  any
    MethodParameters:
           Name  Flags
      newLength  

  private void changeLength(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // long len
         0: .line 690
            aload 0 /* this */
            lload 1 /* len */
            putfield org.h2.store.fs.FileNioMemData.length:J
         1: .line 691
            lload 1 /* len */
            ldc 65536
            invokestatic org.h2.util.MathUtils.roundUpLong:(JJ)J
            lstore 1 /* len */
         2: .line 692
            lload 1 /* len */
            bipush 16
            lushr
            l2i
            istore 3 /* blocks */
        start local 3 // int blocks
         3: .line 693
            iload 3 /* blocks */
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            arraylength
            if_icmpeq 14
         4: .line 694
            iload 3 /* blocks */
            anewarray java.util.concurrent.atomic.AtomicReference
            astore 4 /* newBuffers */
        start local 4 // java.util.concurrent.atomic.AtomicReference[] newBuffers
         5: .line 695
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            iconst_0
            aload 4 /* newBuffers */
            iconst_0
         6: .line 696
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            arraylength
            aload 4 /* newBuffers */
            arraylength
            invokestatic java.lang.Math.min:(II)I
         7: .line 695
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 697
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
            arraylength
            istore 5 /* i */
        start local 5 // int i
         9: goto 12
        10: .line 698
      StackMap locals: int java.util.concurrent.atomic.AtomicReference[] int
      StackMap stack:
            aload 4 /* newBuffers */
            iload 5 /* i */
            new java.util.concurrent.atomic.AtomicReference
            dup
            getstatic org.h2.store.fs.FileNioMemData.COMPRESSED_EMPTY_BLOCK:Ljava/nio/ByteBuffer;
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
            aastore
        11: .line 697
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 5 /* i */
            iload 3 /* blocks */
            if_icmplt 10
        end local 5 // int i
        13: .line 700
            aload 0 /* this */
            aload 4 /* newBuffers */
            putfield org.h2.store.fs.FileNioMemData.buffers:[Ljava/util/concurrent/atomic/AtomicReference;
        end local 4 // java.util.concurrent.atomic.AtomicReference[] newBuffers
        14: .line 702
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.compressLaterCache:Lorg/h2/store/fs/FileNioMemData$CompressLaterCache;
            bipush 8
            iload 3 /* blocks */
            i2f
        15: .line 703
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.compressLaterCachePercent:F
            fmul
            ldc 100.0
            fdiv
            f2i
        16: .line 702
            invokestatic java.lang.Math.max:(II)I
            invokevirtual org.h2.store.fs.FileNioMemData$CompressLaterCache.setCacheSize:(I)V
        17: .line 704
            return
        end local 3 // int blocks
        end local 1 // long len
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lorg/h2/store/fs/FileNioMemData;
            0   18     1         len  J
            3   18     3      blocks  I
            5   14     4  newBuffers  [Ljava/util/concurrent/atomic/AtomicReference;
            9   13     5           i  I
    MethodParameters:
      Name  Flags
      len   

  long readWrite(long, java.nio.ByteBuffer, int, int, boolean);
    descriptor: (JLjava/nio/ByteBuffer;IIZ)J
    flags: (0x0000) 
    Code:
      stack=8, locals=19, args_size=6
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // long pos
        start local 3 // java.nio.ByteBuffer b
        start local 4 // int off
        start local 5 // int len
        start local 6 // boolean write
         0: .line 717
            iload 6 /* write */
            ifeq 1
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.rwLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.writeLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
            goto 2
         1: .line 718
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.rwLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock;
            invokevirtual java.util.concurrent.locks.ReentrantReadWriteLock.readLock:()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
         2: .line 717
      StackMap locals:
      StackMap stack: java.util.concurrent.locks.Lock
            astore 7 /* lock */
        start local 7 // java.util.concurrent.locks.Lock lock
         3: .line 719
            aload 7 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.lock:()V
         4: .line 722
            lload 1 /* pos */
            iload 5 /* len */
            i2l
            ladd
            lstore 8 /* end */
        start local 8 // long end
         5: .line 723
            lload 8 /* end */
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.length:J
            lcmp
            ifle 35
         6: .line 724
            iload 6 /* write */
            ifeq 9
         7: .line 725
            aload 0 /* this */
            lload 8 /* end */
            invokevirtual org.h2.store.fs.FileNioMemData.changeLength:(J)V
         8: .line 726
            goto 35
         9: .line 727
      StackMap locals: java.util.concurrent.locks.Lock long
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.length:J
            lload 1 /* pos */
            lsub
            l2i
            istore 5 /* len */
        10: .line 730
            goto 35
        11: .line 731
      StackMap locals:
      StackMap stack:
            iload 5 /* len */
            i2l
            ldc 65536
            lload 1 /* pos */
            ldc 65535
            land
            lsub
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 10 /* l */
        start local 10 // int l
        12: .line 732
            lload 1 /* pos */
            bipush 16
            lushr
            l2i
            istore 11 /* page */
        start local 11 // int page
        13: .line 733
            aload 0 /* this */
            iload 11 /* page */
            invokevirtual org.h2.store.fs.FileNioMemData.expandPage:(I)Ljava/nio/ByteBuffer;
            astore 12 /* block */
        start local 12 // java.nio.ByteBuffer block
        14: .line 734
            lload 1 /* pos */
            ldc 65535
            land
            l2i
            istore 13 /* blockOffset */
        start local 13 // int blockOffset
        15: .line 735
            iload 6 /* write */
            ifeq 23
        16: .line 736
            aload 3 /* b */
            invokevirtual java.nio.ByteBuffer.slice:()Ljava/nio/ByteBuffer;
            astore 14 /* srcTmp */
        start local 14 // java.nio.ByteBuffer srcTmp
        17: .line 737
            aload 12 /* block */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 15 /* dstTmp */
        start local 15 // java.nio.ByteBuffer dstTmp
        18: .line 738
            aload 14 /* srcTmp */
            iload 4 /* off */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        19: .line 739
            aload 14 /* srcTmp */
            iload 4 /* off */
            iload 10 /* l */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        20: .line 740
            aload 15 /* dstTmp */
            iload 13 /* blockOffset */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        21: .line 741
            aload 15 /* dstTmp */
            aload 14 /* srcTmp */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
        end local 15 // java.nio.ByteBuffer dstTmp
        end local 14 // java.nio.ByteBuffer srcTmp
        22: .line 742
            goto 30
        23: .line 744
      StackMap locals: org.h2.store.fs.FileNioMemData long java.nio.ByteBuffer int int int java.util.concurrent.locks.Lock long int int java.nio.ByteBuffer int
      StackMap stack:
            aload 12 /* block */
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            astore 14 /* tmp */
        start local 14 // java.nio.ByteBuffer tmp
        24: .line 745
            aload 14 /* tmp */
            iload 13 /* blockOffset */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        25: .line 746
            aload 14 /* tmp */
            iload 10 /* l */
            iload 13 /* blockOffset */
            iadd
            invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
            pop
        26: .line 747
            aload 3 /* b */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 15 /* oldPosition */
        start local 15 // int oldPosition
        27: .line 748
            aload 3 /* b */
            iload 4 /* off */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        28: .line 749
            aload 3 /* b */
            aload 14 /* tmp */
            invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
            pop
        29: .line 751
            aload 3 /* b */
            iload 15 /* oldPosition */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 15 // int oldPosition
        end local 14 // java.nio.ByteBuffer tmp
        30: .line 753
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.compress:Z
            ifeq 32
        31: .line 754
            aload 0 /* this */
            iload 11 /* page */
            invokevirtual org.h2.store.fs.FileNioMemData.addToCompressLaterCache:(I)V
        32: .line 756
      StackMap locals:
      StackMap stack:
            iload 4 /* off */
            iload 10 /* l */
            iadd
            istore 4 /* off */
        33: .line 757
            lload 1 /* pos */
            iload 10 /* l */
            i2l
            ladd
            lstore 1 /* pos */
        34: .line 758
            iload 5 /* len */
            iload 10 /* l */
            isub
            istore 5 /* len */
        end local 13 // int blockOffset
        end local 12 // java.nio.ByteBuffer block
        end local 11 // int page
        end local 10 // int l
        35: .line 730
      StackMap locals: org.h2.store.fs.FileNioMemData long java.nio.ByteBuffer int int int java.util.concurrent.locks.Lock long
      StackMap stack:
            iload 5 /* len */
            ifgt 11
        36: .line 760
            lload 1 /* pos */
            lstore 17
        37: .line 762
            aload 7 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        38: .line 760
            lload 17
            lreturn
        end local 8 // long end
        39: .line 761
      StackMap locals: org.h2.store.fs.FileNioMemData long java.nio.ByteBuffer int int int java.util.concurrent.locks.Lock
      StackMap stack: java.lang.Throwable
            astore 16
        40: .line 762
            aload 7 /* lock */
            invokeinterface java.util.concurrent.locks.Lock.unlock:()V
        41: .line 763
            aload 16
            athrow
        end local 7 // java.util.concurrent.locks.Lock lock
        end local 6 // boolean write
        end local 5 // int len
        end local 4 // int off
        end local 3 // java.nio.ByteBuffer b
        end local 1 // long pos
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   42     0         this  Lorg/h2/store/fs/FileNioMemData;
            0   42     1          pos  J
            0   42     3            b  Ljava/nio/ByteBuffer;
            0   42     4          off  I
            0   42     5          len  I
            0   42     6        write  Z
            3   42     7         lock  Ljava/util/concurrent/locks/Lock;
            5   39     8          end  J
           12   35    10            l  I
           13   35    11         page  I
           14   35    12        block  Ljava/nio/ByteBuffer;
           15   35    13  blockOffset  I
           17   22    14       srcTmp  Ljava/nio/ByteBuffer;
           18   22    15       dstTmp  Ljava/nio/ByteBuffer;
           24   30    14          tmp  Ljava/nio/ByteBuffer;
           27   30    15  oldPosition  I
      Exception table:
        from    to  target  type
           4    37      39  any
    MethodParameters:
       Name  Flags
      pos    
      b      
      off    
      len    
      write  

  void setName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.store.fs.FileNioMemData this
        start local 1 // java.lang.String name
         0: .line 772
            aload 0 /* this */
            aload 1 /* name */
            putfield org.h2.store.fs.FileNioMemData.name:Ljava/lang/String;
         1: .line 773
            return
        end local 1 // java.lang.String name
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/store/fs/FileNioMemData;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 781
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.name:Ljava/lang/String;
            areturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/fs/FileNioMemData;

  long getLastModified();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 790
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.lastModified:J
            lreturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/fs/FileNioMemData;

  boolean canWrite();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 799
            aload 0 /* this */
            getfield org.h2.store.fs.FileNioMemData.isReadOnly:Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/store/fs/FileNioMemData;

  boolean setReadOnly();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.store.fs.FileNioMemData this
         0: .line 808
            aload 0 /* this */
            iconst_1
            putfield org.h2.store.fs.FileNioMemData.isReadOnly:Z
         1: .line 809
            iconst_1
            ireturn
        end local 0 // org.h2.store.fs.FileNioMemData this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/store/fs/FileNioMemData;
}
SourceFile: "FilePathNioMem.java"
NestMembers:
  org.h2.store.fs.FileNioMemData$1  org.h2.store.fs.FileNioMemData$2  org.h2.store.fs.FileNioMemData$CompressItem  org.h2.store.fs.FileNioMemData$CompressLaterCache
InnerClasses:
  public ReadLock = java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock of java.util.concurrent.locks.ReentrantReadWriteLock
  public WriteLock = java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock of java.util.concurrent.locks.ReentrantReadWriteLock
  org.h2.store.fs.FileNioMemData$1
  org.h2.store.fs.FileNioMemData$2
  CompressItem = org.h2.store.fs.FileNioMemData$CompressItem of org.h2.store.fs.FileNioMemData
  CompressLaterCache = org.h2.store.fs.FileNioMemData$CompressLaterCache of org.h2.store.fs.FileNioMemData