public class org.h2.mvstore.FileStore
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.mvstore.FileStore
  super_class: java.lang.Object
{
  protected final java.util.concurrent.atomic.AtomicLong readCount;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.util.concurrent.atomic.AtomicLong readBytes;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.util.concurrent.atomic.AtomicLong writeCount;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.util.concurrent.atomic.AtomicLong writeBytes;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.h2.mvstore.FreeSpaceBitSet freeSpace;
    descriptor: Lorg/h2/mvstore/FreeSpaceBitSet;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

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

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

  protected long fileSize;
    descriptor: J
    flags: (0x0004) ACC_PROTECTED

  private java.nio.channels.FileChannel file;
    descriptor: Ljava/nio/channels/FileChannel;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.channels.FileChannel encryptedFile;
    descriptor: Ljava/nio/channels/FileChannel;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.channels.FileLock fileLock;
    descriptor: Ljava/nio/channels/FileLock;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 25
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 30
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield org.h2.mvstore.FileStore.readCount:Ljava/util/concurrent/atomic/AtomicLong;
         2: .line 35
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield org.h2.mvstore.FileStore.readBytes:Ljava/util/concurrent/atomic/AtomicLong;
         3: .line 40
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield org.h2.mvstore.FileStore.writeCount:Ljava/util/concurrent/atomic/AtomicLong;
         4: .line 45
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:()V
            putfield org.h2.mvstore.FileStore.writeBytes:Ljava/util/concurrent/atomic/AtomicLong;
         5: .line 51
            aload 0 /* this */
         6: .line 52
            new org.h2.mvstore.FreeSpaceBitSet
            dup
            iconst_2
            sipush 4096
            invokespecial org.h2.mvstore.FreeSpaceBitSet.<init>:(II)V
            putfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
         7: .line 25
            return
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/h2/mvstore/FileStore;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 86
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileName:Ljava/lang/String;
            areturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public java.nio.ByteBuffer readFully(long, int);
    descriptor: (JI)Ljava/nio/ByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // long pos
        start local 3 // int len
         0: .line 97
            iload 3 /* len */
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 4 /* dst */
        start local 4 // java.nio.ByteBuffer dst
         1: .line 98
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            lload 1 /* pos */
            aload 4 /* dst */
            invokestatic org.h2.mvstore.DataUtils.readFully:(Ljava/nio/channels/FileChannel;JLjava/nio/ByteBuffer;)V
         2: .line 99
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.readCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            pop2
         3: .line 100
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.readBytes:Ljava/util/concurrent/atomic/AtomicLong;
            iload 3 /* len */
            i2l
            invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
            pop2
         4: .line 101
            aload 4 /* dst */
            areturn
        end local 4 // java.nio.ByteBuffer dst
        end local 3 // int len
        end local 1 // long pos
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/h2/mvstore/FileStore;
            0    5     1   pos  J
            0    5     3   len  I
            1    5     4   dst  Ljava/nio/ByteBuffer;
    MethodParameters:
      Name  Flags
      pos   
      len   

  public void writeFully(long, java.nio.ByteBuffer);
    descriptor: (JLjava/nio/ByteBuffer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // long pos
        start local 3 // java.nio.ByteBuffer src
         0: .line 111
            aload 3 /* src */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 4 /* len */
        start local 4 // int len
         1: .line 112
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileSize:J
            lload 1 /* pos */
            iload 4 /* len */
            i2l
            ladd
            invokestatic java.lang.Math.max:(JJ)J
            putfield org.h2.mvstore.FileStore.fileSize:J
         2: .line 113
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            lload 1 /* pos */
            aload 3 /* src */
            invokestatic org.h2.mvstore.DataUtils.writeFully:(Ljava/nio/channels/FileChannel;JLjava/nio/ByteBuffer;)V
         3: .line 114
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.writeCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            pop2
         4: .line 115
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.writeBytes:Ljava/util/concurrent/atomic/AtomicLong;
            iload 4 /* len */
            i2l
            invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
            pop2
         5: .line 116
            return
        end local 4 // int len
        end local 3 // java.nio.ByteBuffer src
        end local 1 // long pos
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/h2/mvstore/FileStore;
            0    6     1   pos  J
            0    6     3   src  Ljava/nio/ByteBuffer;
            1    6     4   len  I
    MethodParameters:
      Name  Flags
      pos   
      src   

  public void open(java.lang.String, boolean, char[]);
    descriptor: (Ljava/lang/String;Z[C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // java.lang.String fileName
        start local 2 // boolean readOnly
        start local 3 // char[] encryptionKey
         0: .line 128
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            ifnull 2
         1: .line 129
            return
         2: .line 132
      StackMap locals:
      StackMap stack:
            getstatic org.h2.mvstore.cache.FilePathCache.INSTANCE:Lorg/h2/mvstore/cache/FilePathCache;
            invokevirtual org.h2.mvstore.cache.FilePathCache.getScheme:()Ljava/lang/String;
            pop
         3: .line 133
            aload 1 /* fileName */
            invokestatic org.h2.store.fs.FilePath.get:(Ljava/lang/String;)Lorg/h2/store/fs/FilePath;
            astore 4 /* p */
        start local 4 // org.h2.store.fs.FilePath p
         4: .line 135
            aload 4 /* p */
            instanceof org.h2.store.fs.FilePathDisk
            ifeq 8
         5: .line 136
            aload 1 /* fileName */
            new java.lang.StringBuilder
            dup
            aload 4 /* p */
            invokevirtual org.h2.store.fs.FilePath.getScheme:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 8
         6: .line 138
            ldc Lorg/h2/store/fs/FilePathNio;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            pop
         7: .line 139
            new java.lang.StringBuilder
            dup
            ldc "nio:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* fileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* fileName */
         8: .line 141
      StackMap locals: org.h2.store.fs.FilePath
      StackMap stack:
            aload 0 /* this */
            aload 1 /* fileName */
            putfield org.h2.mvstore.FileStore.fileName:Ljava/lang/String;
         9: .line 142
            aload 1 /* fileName */
            invokestatic org.h2.store.fs.FilePath.get:(Ljava/lang/String;)Lorg/h2/store/fs/FilePath;
            astore 5 /* f */
        start local 5 // org.h2.store.fs.FilePath f
        10: .line 143
            aload 5 /* f */
            invokevirtual org.h2.store.fs.FilePath.getParent:()Lorg/h2/store/fs/FilePath;
            astore 6 /* parent */
        start local 6 // org.h2.store.fs.FilePath parent
        11: .line 144
            aload 6 /* parent */
            ifnull 14
            aload 6 /* parent */
            invokevirtual org.h2.store.fs.FilePath.exists:()Z
            ifne 14
        12: .line 146
            ldc "Directory does not exist: {0}"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* parent */
            aastore
        13: .line 145
            invokestatic org.h2.mvstore.DataUtils.newIllegalArgumentException:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalArgumentException;
            athrow
        14: .line 148
      StackMap locals: org.h2.store.fs.FilePath org.h2.store.fs.FilePath
      StackMap stack:
            aload 5 /* f */
            invokevirtual org.h2.store.fs.FilePath.exists:()Z
            ifeq 16
            aload 5 /* f */
            invokevirtual org.h2.store.fs.FilePath.canWrite:()Z
            ifne 16
        15: .line 149
            iconst_1
            istore 2 /* readOnly */
        16: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* readOnly */
            putfield org.h2.mvstore.FileStore.readOnly:Z
        17: .line 153
            aload 0 /* this */
            aload 5 /* f */
            iload 2 /* readOnly */
            ifeq 18
            ldc "r"
            goto 19
      StackMap locals: org.h2.mvstore.FileStore java.lang.String int char[] org.h2.store.fs.FilePath org.h2.store.fs.FilePath org.h2.store.fs.FilePath
      StackMap stack: org.h2.mvstore.FileStore org.h2.store.fs.FilePath
        18: ldc "rw"
      StackMap locals: org.h2.mvstore.FileStore java.lang.String int char[] org.h2.store.fs.FilePath org.h2.store.fs.FilePath org.h2.store.fs.FilePath
      StackMap stack: org.h2.mvstore.FileStore org.h2.store.fs.FilePath java.lang.String
        19: invokevirtual org.h2.store.fs.FilePath.open:(Ljava/lang/String;)Ljava/nio/channels/FileChannel;
            putfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
        20: .line 154
            aload 3 /* encryptionKey */
            ifnull 24
        21: .line 155
            aload 3 /* encryptionKey */
            invokestatic org.h2.store.fs.FilePathEncrypt.getPasswordBytes:([C)[B
            astore 7 /* key */
        start local 7 // byte[] key
        22: .line 156
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            putfield org.h2.mvstore.FileStore.encryptedFile:Ljava/nio/channels/FileChannel;
        23: .line 157
            aload 0 /* this */
            new org.h2.store.fs.FilePathEncrypt$FileEncrypt
            dup
            aload 1 /* fileName */
            aload 7 /* key */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            invokespecial org.h2.store.fs.FilePathEncrypt$FileEncrypt.<init>:(Ljava/lang/String;[BLjava/nio/channels/FileChannel;)V
            putfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
        end local 7 // byte[] key
        24: .line 160
      StackMap locals:
      StackMap stack:
            iload 2 /* readOnly */
            ifeq 27
        25: .line 161
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            lconst_0
            ldc 9223372036854775807
            iconst_1
            invokevirtual java.nio.channels.FileChannel.tryLock:(JJZ)Ljava/nio/channels/FileLock;
            putfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
        26: .line 162
            goto 33
        27: .line 163
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.tryLock:()Ljava/nio/channels/FileLock;
            putfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
        28: .line 165
            goto 33
      StackMap locals:
      StackMap stack: java.nio.channels.OverlappingFileLockException
        29: astore 7 /* e */
        start local 7 // java.nio.channels.OverlappingFileLockException e
        30: .line 167
            bipush 7
        31: .line 168
            ldc "The file is locked: {0}"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* fileName */
            aastore
            dup
            iconst_1
            aload 7 /* e */
            aastore
        32: .line 166
            invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
            athrow
        end local 7 // java.nio.channels.OverlappingFileLockException e
        33: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
            ifnonnull 40
        34: .line 171
            aload 0 /* this */
            invokevirtual org.h2.mvstore.FileStore.close:()V
        35: goto 37
      StackMap locals:
      StackMap stack: java.lang.Exception
        36: pop
        37: .line 173
      StackMap locals:
      StackMap stack:
            bipush 7
        38: .line 174
            ldc "The file is locked: {0}"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* fileName */
            aastore
        39: .line 172
            invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
            athrow
        40: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.size:()J
            putfield org.h2.mvstore.FileStore.fileSize:J
        41: .line 177
            goto 49
      StackMap locals:
      StackMap stack: java.io.IOException
        42: astore 7 /* e */
        start local 7 // java.io.IOException e
        43: .line 178
            aload 0 /* this */
            invokevirtual org.h2.mvstore.FileStore.close:()V
        44: goto 46
      StackMap locals: org.h2.mvstore.FileStore java.lang.String int char[] org.h2.store.fs.FilePath org.h2.store.fs.FilePath org.h2.store.fs.FilePath java.io.IOException
      StackMap stack: java.lang.Exception
        45: pop
        46: .line 180
      StackMap locals:
      StackMap stack:
            iconst_1
        47: .line 181
            ldc "Could not open file {0}"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* fileName */
            aastore
            dup
            iconst_1
            aload 7 /* e */
            aastore
        48: .line 179
            invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
            athrow
        end local 7 // java.io.IOException e
        49: .line 183
      StackMap locals:
      StackMap stack:
            return
        end local 6 // org.h2.store.fs.FilePath parent
        end local 5 // org.h2.store.fs.FilePath f
        end local 4 // org.h2.store.fs.FilePath p
        end local 3 // char[] encryptionKey
        end local 2 // boolean readOnly
        end local 1 // java.lang.String fileName
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   50     0           this  Lorg/h2/mvstore/FileStore;
            0   50     1       fileName  Ljava/lang/String;
            0   50     2       readOnly  Z
            0   50     3  encryptionKey  [C
            4   50     4              p  Lorg/h2/store/fs/FilePath;
           10   50     5              f  Lorg/h2/store/fs/FilePath;
           11   50     6         parent  Lorg/h2/store/fs/FilePath;
           22   24     7            key  [B
           30   33     7              e  Ljava/nio/channels/OverlappingFileLockException;
           43   49     7              e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          24    28      29  Class java.nio.channels.OverlappingFileLockException
          34    35      36  Class java.lang.Exception
          17    41      42  Class java.io.IOException
          43    44      45  Class java.lang.Exception
    MethodParameters:
               Name  Flags
      fileName       
      readOnly       
      encryptionKey  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 190
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            ifnull 13
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.isOpen:()Z
            ifeq 13
         1: .line 191
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
            ifnull 3
         2: .line 192
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
            invokevirtual java.nio.channels.FileLock.release:()V
         3: .line 194
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.close:()V
         4: .line 196
            goto 13
      StackMap locals:
      StackMap stack: java.lang.Exception
         5: astore 1 /* e */
        start local 1 // java.lang.Exception e
         6: .line 198
            iconst_2
         7: .line 199
            ldc "Closing failed for file {0}"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* e */
            aastore
         8: .line 197
            invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
            athrow
        end local 1 // java.lang.Exception e
         9: .line 200
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
        10: .line 201
            aload 0 /* this */
            aconst_null
            putfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
        11: .line 202
            aload 0 /* this */
            aconst_null
            putfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
        12: .line 203
            aload 2
            athrow
        13: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.h2.mvstore.FileStore.fileLock:Ljava/nio/channels/FileLock;
        14: .line 202
            aload 0 /* this */
            aconst_null
            putfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
        15: .line 204
            return
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lorg/h2/mvstore/FileStore;
            6    9     1     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     4       5  Class java.lang.Exception
           0     9       9  any

  public void sync();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 210
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            ifnull 7
         1: .line 212
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            iconst_1
            invokevirtual java.nio.channels.FileChannel.force:(Z)V
         2: .line 213
            goto 7
      StackMap locals:
      StackMap stack: java.io.IOException
         3: astore 1 /* e */
        start local 1 // java.io.IOException e
         4: .line 215
            iconst_2
         5: .line 216
            ldc "Could not sync file {0}"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* e */
            aastore
         6: .line 214
            invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
            athrow
        end local 1 // java.io.IOException e
         7: .line 219
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/h2/mvstore/FileStore;
            4    7     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException

  public long size();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 227
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileSize:J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public void truncate(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // long size
         0: .line 236
            iconst_0
            istore 3 /* attemptCount */
        start local 3 // int attemptCount
         1: .line 239
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.writeCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            pop2
         2: .line 240
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            lload 1 /* size */
            invokevirtual java.nio.channels.FileChannel.truncate:(J)Ljava/nio/channels/FileChannel;
            pop
         3: .line 241
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileSize:J
            lload 1 /* size */
            invokestatic java.lang.Math.min:(JJ)J
            putfield org.h2.mvstore.FileStore.fileSize:J
         4: .line 242
            return
         5: .line 243
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
         6: .line 244
            iinc 3 /* attemptCount */ 1
            iload 3 /* attemptCount */
            bipush 10
            if_icmpne 11
         7: .line 246
            iconst_2
         8: .line 247
            ldc "Could not truncate file {0} to size {1}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         9: .line 248
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            lload 1 /* size */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_2
            aload 4 /* e */
            aastore
        10: .line 245
            invokestatic org.h2.mvstore.DataUtils.newIllegalStateException:(ILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/IllegalStateException;
            athrow
        11: .line 250
      StackMap locals: java.io.IOException
      StackMap stack:
            invokestatic java.lang.System.gc:()V
        12: .line 251
            invokestatic java.lang.Thread.yield:()V
        end local 4 // java.io.IOException e
        13: .line 237
            goto 1
        end local 3 // int attemptCount
        end local 1 // long size
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0          this  Lorg/h2/mvstore/FileStore;
            0   14     1          size  J
            1   14     3  attemptCount  I
            6   13     4             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     4       5  Class java.io.IOException
    MethodParameters:
      Name  Flags
      size  

  public java.nio.channels.FileChannel getFile();
    descriptor: ()Ljava/nio/channels/FileChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 265
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.file:Ljava/nio/channels/FileChannel;
            areturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public java.nio.channels.FileChannel getEncryptedFile();
    descriptor: ()Ljava/nio/channels/FileChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 277
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.encryptedFile:Ljava/nio/channels/FileChannel;
            areturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public long getWriteCount();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 287
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.writeCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public long getWriteBytes();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 296
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.writeBytes:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public long getReadCount();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 306
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.readCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public long getReadBytes();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 315
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.readBytes:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public boolean isReadOnly();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 319
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.readOnly:Z
            ireturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public int getDefaultRetentionTime();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 328
            ldc 45000
            ireturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public void markUsed(long, int);
    descriptor: (JI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // long pos
        start local 3 // int length
         0: .line 338
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            lload 1 /* pos */
            iload 3 /* length */
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.markUsed:(JI)V
         1: .line 339
            return
        end local 3 // int length
        end local 1 // long pos
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/h2/mvstore/FileStore;
            0    2     1     pos  J
            0    2     3  length  I
    MethodParameters:
        Name  Flags
      pos     
      length  

  public long allocate(int);
    descriptor: (I)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // int length
         0: .line 348
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            iload 1 /* length */
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.allocate:(I)J
            lreturn
        end local 1 // int length
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/h2/mvstore/FileStore;
            0    1     1  length  I
    MethodParameters:
        Name  Flags
      length  

  public long predictAllocation(int);
    descriptor: (I)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // int length
         0: .line 358
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            iload 1 /* length */
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.predictAllocation:(I)J
            lreturn
        end local 1 // int length
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/h2/mvstore/FileStore;
            0    1     1  length  I
    MethodParameters:
        Name  Flags
      length  

  public void free(long, int);
    descriptor: (JI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.h2.mvstore.FileStore this
        start local 1 // long pos
        start local 3 // int length
         0: .line 368
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            lload 1 /* pos */
            iload 3 /* length */
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.free:(JI)V
         1: .line 369
            return
        end local 3 // int length
        end local 1 // long pos
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/h2/mvstore/FileStore;
            0    2     1     pos  J
            0    2     3  length  I
    MethodParameters:
        Name  Flags
      pos     
      length  

  public int getFillRate();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 372
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.getFillRate:()I
            ireturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  long getFirstFree();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 376
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.getFirstFree:()J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  long getFileLengthInUse();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 380
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.getLastFree:()J
            lreturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;

  public void clear();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 387
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.freeSpace:Lorg/h2/mvstore/FreeSpaceBitSet;
            invokevirtual org.h2.mvstore.FreeSpaceBitSet.clear:()V
         1: .line 388
            return
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/mvstore/FileStore;

  public java.lang.String getFileName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.mvstore.FileStore this
         0: .line 396
            aload 0 /* this */
            getfield org.h2.mvstore.FileStore.fileName:Ljava/lang/String;
            areturn
        end local 0 // org.h2.mvstore.FileStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/FileStore;
}
SourceFile: "FileStore.java"
InnerClasses:
  public FileEncrypt = org.h2.store.fs.FilePathEncrypt$FileEncrypt of org.h2.store.fs.FilePathEncrypt