public class org.h2.store.PageInputStream extends java.io.InputStream
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.store.PageInputStream
  super_class: java.io.InputStream
{
  private final org.h2.store.PageStore store;
    descriptor: Lorg/h2/store/PageStore;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.h2.message.Trace trace;
    descriptor: Lorg/h2/message/Trace;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int firstTrunkPage;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.h2.store.PageStreamTrunk$Iterator trunkIterator;
    descriptor: Lorg/h2/store/PageStreamTrunk$Iterator;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private org.h2.store.PageStreamTrunk trunk;
    descriptor: Lorg/h2/store/PageStreamTrunk;
    flags: (0x0002) ACC_PRIVATE

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

  private org.h2.store.PageStreamData data;
    descriptor: Lorg/h2/store/PageStreamData;
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private final byte[] buffer;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  void <init>(org.h2.store.PageStore, int, int, int);
    descriptor: (Lorg/h2/store/PageStore;III)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.h2.store.PageInputStream this
        start local 1 // org.h2.store.PageStore store
        start local 2 // int logKey
        start local 3 // int firstTrunkPage
        start local 4 // int dataPage
         0: .line 35
            aload 0 /* this */
            invokespecial java.io.InputStream.<init>:()V
         1: .line 32
            aload 0 /* this */
            iconst_1
            newarray 8
            putfield org.h2.store.PageInputStream.buffer:[B
         2: .line 36
            aload 0 /* this */
            aload 1 /* store */
            putfield org.h2.store.PageInputStream.store:Lorg/h2/store/PageStore;
         3: .line 37
            aload 0 /* this */
            aload 1 /* store */
            invokevirtual org.h2.store.PageStore.getTrace:()Lorg/h2/message/Trace;
            putfield org.h2.store.PageInputStream.trace:Lorg/h2/message/Trace;
         4: .line 39
            aload 0 /* this */
            iload 2 /* logKey */
            iconst_1
            isub
            putfield org.h2.store.PageInputStream.logKey:I
         5: .line 40
            aload 0 /* this */
            iload 3 /* firstTrunkPage */
            putfield org.h2.store.PageInputStream.firstTrunkPage:I
         6: .line 41
            aload 0 /* this */
            new org.h2.store.PageStreamTrunk$Iterator
            dup
            aload 1 /* store */
            iload 3 /* firstTrunkPage */
            invokespecial org.h2.store.PageStreamTrunk$Iterator.<init>:(Lorg/h2/store/PageStore;I)V
            putfield org.h2.store.PageInputStream.trunkIterator:Lorg/h2/store/PageStreamTrunk$Iterator;
         7: .line 42
            aload 0 /* this */
            iload 4 /* dataPage */
            putfield org.h2.store.PageInputStream.dataPage:I
         8: .line 43
            return
        end local 4 // int dataPage
        end local 3 // int firstTrunkPage
        end local 2 // int logKey
        end local 1 // org.h2.store.PageStore store
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/h2/store/PageInputStream;
            0    9     1           store  Lorg/h2/store/PageStore;
            0    9     2          logKey  I
            0    9     3  firstTrunkPage  I
            0    9     4        dataPage  I
    MethodParameters:
                Name  Flags
      store           
      logKey          
      firstTrunkPage  
      dataPage        

  public int read();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.h2.store.PageInputStream this
         0: .line 47
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.buffer:[B
            invokevirtual org.h2.store.PageInputStream.read:([B)I
            istore 1 /* len */
        start local 1 // int len
         1: .line 48
            iload 1 /* len */
            ifge 2
            iconst_m1
            goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 0 /* this */
            getfield org.h2.store.PageInputStream.buffer:[B
            iconst_0
            baload
            sipush 255
            iand
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 1 // int len
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/store/PageInputStream;
            1    4     1   len  I
    Exceptions:
      throws java.io.IOException

  public int read(byte[]);
    descriptor: ([B)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.h2.store.PageInputStream this
        start local 1 // byte[] b
         0: .line 53
            aload 0 /* this */
            aload 1 /* b */
            iconst_0
            aload 1 /* b */
            arraylength
            invokevirtual org.h2.store.PageInputStream.read:([BII)I
            ireturn
        end local 1 // byte[] b
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/PageInputStream;
            0    1     1     b  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     

  public int read(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.h2.store.PageInputStream this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 58
            iload 3 /* len */
            ifne 2
         1: .line 59
            iconst_0
            ireturn
         2: .line 61
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* read */
        start local 4 // int read
         3: .line 62
            goto 10
         4: .line 63
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokevirtual org.h2.store.PageInputStream.readBlock:([BII)I
            istore 5 /* r */
        start local 5 // int r
         5: .line 64
            iload 5 /* r */
            ifge 7
         6: .line 65
            goto 11
         7: .line 67
      StackMap locals: int
      StackMap stack:
            iload 4 /* read */
            iload 5 /* r */
            iadd
            istore 4 /* read */
         8: .line 68
            iload 2 /* off */
            iload 5 /* r */
            iadd
            istore 2 /* off */
         9: .line 69
            iload 3 /* len */
            iload 5 /* r */
            isub
            istore 3 /* len */
        end local 5 // int r
        10: .line 62
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifgt 4
        11: .line 71
      StackMap locals:
      StackMap stack:
            iload 4 /* read */
            ifne 12
            iconst_m1
            goto 13
      StackMap locals:
      StackMap stack:
        12: iload 4 /* read */
      StackMap locals:
      StackMap stack: int
        13: ireturn
        end local 4 // int read
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lorg/h2/store/PageInputStream;
            0   14     1     b  [B
            0   14     2   off  I
            0   14     3   len  I
            3   14     4  read  I
            5   10     5     r  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  private int readBlock(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.h2.store.PageInputStream this
        start local 1 // byte[] buff
        start local 2 // int off
        start local 3 // int len
         0: .line 76
            aload 0 /* this */
            invokevirtual org.h2.store.PageInputStream.fillBuffer:()V
         1: .line 77
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.endOfFile:Z
            ifeq 3
         2: .line 78
            iconst_m1
            ireturn
         3: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.remaining:I
            iload 3 /* len */
            invokestatic java.lang.Math.min:(II)I
            istore 4 /* l */
        start local 4 // int l
         4: .line 81
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.data:Lorg/h2/store/PageStreamData;
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.dataPos:I
            aload 1 /* buff */
            iload 2 /* off */
            iload 4 /* l */
            invokevirtual org.h2.store.PageStreamData.read:(I[BII)V
         5: .line 82
            aload 0 /* this */
            dup
            getfield org.h2.store.PageInputStream.remaining:I
            iload 4 /* l */
            isub
            putfield org.h2.store.PageInputStream.remaining:I
         6: .line 83
            aload 0 /* this */
            dup
            getfield org.h2.store.PageInputStream.dataPos:I
            iload 4 /* l */
            iadd
            putfield org.h2.store.PageInputStream.dataPos:I
         7: .line 84
            iload 4 /* l */
         8: ireturn
        end local 4 // int l
         9: .line 85
      StackMap locals:
      StackMap stack: org.h2.message.DbException
            pop
        10: .line 86
            new java.io.EOFException
            dup
            invokespecial java.io.EOFException.<init>:()V
            athrow
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] buff
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/h2/store/PageInputStream;
            0   11     1  buff  [B
            0   11     2   off  I
            0   11     3   len  I
            4    9     4     l  I
      Exception table:
        from    to  target  type
           0     2       9  Class org.h2.message.DbException
           3     8       9  Class org.h2.message.DbException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      buff  
      off   
      len   

  private void fillBuffer();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.h2.store.PageInputStream this
         0: .line 91
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.remaining:I
            ifgt 1
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.endOfFile:Z
            ifeq 2
         1: .line 92
      StackMap locals:
      StackMap stack:
            return
         2: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
            ifnonnull 9
         3: .line 97
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trunkIterator:Lorg/h2/store/PageStreamTrunk$Iterator;
            invokevirtual org.h2.store.PageStreamTrunk$Iterator.next:()Lorg/h2/store/PageStreamTrunk;
            putfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
         4: .line 98
            aload 0 /* this */
            iconst_0
            putfield org.h2.store.PageInputStream.trunkIndex:I
         5: .line 99
            aload 0 /* this */
            dup
            getfield org.h2.store.PageInputStream.logKey:I
            iconst_1
            iadd
            putfield org.h2.store.PageInputStream.logKey:I
         6: .line 100
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
            ifnull 7
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
            invokevirtual org.h2.store.PageStreamTrunk.getLogKey:()I
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.logKey:I
            if_icmpeq 9
         7: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.h2.store.PageInputStream.endOfFile:Z
         8: .line 102
            return
         9: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
            ifnull 2
        10: .line 106
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
            aload 0 /* this */
            dup
            getfield org.h2.store.PageInputStream.trunkIndex:I
            dup_x1
            iconst_1
            iadd
            putfield org.h2.store.PageInputStream.trunkIndex:I
            invokevirtual org.h2.store.PageStreamTrunk.getPageData:(I)I
            istore 1 /* next */
        start local 1 // int next
        11: .line 107
            iload 1 /* next */
            iconst_m1
            if_icmpne 14
        12: .line 108
            aload 0 /* this */
            aconst_null
            putfield org.h2.store.PageInputStream.trunk:Lorg/h2/store/PageStreamTrunk;
        13: .line 109
            goto 2
      StackMap locals: int
      StackMap stack:
        14: aload 0 /* this */
            getfield org.h2.store.PageInputStream.dataPage:I
            iconst_m1
            if_icmpeq 15
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.dataPage:I
            iload 1 /* next */
            if_icmpne 2
        15: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trace:Lorg/h2/message/Trace;
            invokevirtual org.h2.message.Trace.isDebugEnabled:()Z
            ifeq 17
        16: .line 115
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.trace:Lorg/h2/message/Trace;
            new java.lang.StringBuilder
            dup
            ldc "pageIn.readPage "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* next */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.h2.message.Trace.debug:(Ljava/lang/String;)V
        17: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_m1
            putfield org.h2.store.PageInputStream.dataPage:I
        18: .line 118
            aload 0 /* this */
            aconst_null
            putfield org.h2.store.PageInputStream.data:Lorg/h2/store/PageStreamData;
        19: .line 119
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.store:Lorg/h2/store/PageStore;
            iload 1 /* next */
            invokevirtual org.h2.store.PageStore.getPage:(I)Lorg/h2/store/Page;
            astore 2 /* p */
        start local 2 // org.h2.store.Page p
        20: .line 120
            aload 2 /* p */
            instanceof org.h2.store.PageStreamData
            ifeq 22
        21: .line 121
            aload 0 /* this */
            aload 2 /* p */
            checkcast org.h2.store.PageStreamData
            putfield org.h2.store.PageInputStream.data:Lorg/h2/store/PageStreamData;
        22: .line 123
      StackMap locals: org.h2.store.Page
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.data:Lorg/h2/store/PageStreamData;
            ifnull 23
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.data:Lorg/h2/store/PageStreamData;
            invokevirtual org.h2.store.PageStreamData.getLogKey:()I
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.logKey:I
            if_icmpeq 25
        23: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.h2.store.PageInputStream.endOfFile:Z
        24: .line 125
            return
        25: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic org.h2.store.PageStreamData.getReadStart:()I
            putfield org.h2.store.PageInputStream.dataPos:I
        26: .line 128
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.store:Lorg/h2/store/PageStore;
            invokevirtual org.h2.store.PageStore.getPageSize:()I
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.dataPos:I
            isub
            putfield org.h2.store.PageInputStream.remaining:I
        27: .line 129
            return
        end local 2 // org.h2.store.Page p
        end local 1 // int next
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   28     0  this  Lorg/h2/store/PageInputStream;
           11   28     1  next  I
           20   28     2     p  Lorg/h2/store/Page;

  java.util.BitSet allocateAllPages();
    descriptor: ()Ljava/util/BitSet;
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // org.h2.store.PageInputStream this
         0: .line 137
            new java.util.BitSet
            dup
            invokespecial java.util.BitSet.<init>:()V
            astore 1 /* pages */
        start local 1 // java.util.BitSet pages
         1: .line 138
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.logKey:I
            istore 2 /* key */
        start local 2 // int key
         2: .line 139
            new org.h2.store.PageStreamTrunk$Iterator
            dup
         3: .line 140
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.store:Lorg/h2/store/PageStore;
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.firstTrunkPage:I
         4: .line 139
            invokespecial org.h2.store.PageStreamTrunk$Iterator.<init>:(Lorg/h2/store/PageStore;I)V
            astore 3 /* it */
        start local 3 // org.h2.store.PageStreamTrunk$Iterator it
         5: .line 142
      StackMap locals: java.util.BitSet int org.h2.store.PageStreamTrunk$Iterator
      StackMap stack:
            aload 3 /* it */
            invokevirtual org.h2.store.PageStreamTrunk$Iterator.next:()Lorg/h2/store/PageStreamTrunk;
            astore 4 /* t */
        start local 4 // org.h2.store.PageStreamTrunk t
         6: .line 143
            iinc 2 /* key */ 1
         7: .line 144
            aload 3 /* it */
            invokevirtual org.h2.store.PageStreamTrunk$Iterator.canDelete:()Z
            ifeq 9
         8: .line 145
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.store:Lorg/h2/store/PageStore;
            aload 3 /* it */
            invokevirtual org.h2.store.PageStreamTrunk$Iterator.getCurrentPageId:()I
            invokevirtual org.h2.store.PageStore.allocatePage:(I)V
         9: .line 147
      StackMap locals: org.h2.store.PageStreamTrunk
      StackMap stack:
            aload 4 /* t */
            ifnull 19
            aload 4 /* t */
            invokevirtual org.h2.store.PageStreamTrunk.getLogKey:()I
            iload 2 /* key */
            if_icmpeq 11
        10: .line 148
            goto 19
        11: .line 150
      StackMap locals:
      StackMap stack:
            aload 1 /* pages */
            aload 4 /* t */
            invokevirtual org.h2.store.PageStreamTrunk.getPos:()I
            invokevirtual java.util.BitSet.set:(I)V
        12: .line 151
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        13: .line 152
      StackMap locals: int
      StackMap stack:
            aload 4 /* t */
            iload 5 /* i */
            invokevirtual org.h2.store.PageStreamTrunk.getPageData:(I)I
            istore 6 /* n */
        start local 6 // int n
        14: .line 153
            iload 6 /* n */
            iconst_m1
            if_icmpne 16
        15: .line 154
            goto 5
        16: .line 156
      StackMap locals: int
      StackMap stack:
            aload 1 /* pages */
            iload 6 /* n */
            invokevirtual java.util.BitSet.set:(I)V
        17: .line 157
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.store:Lorg/h2/store/PageStore;
            iload 6 /* n */
            invokevirtual org.h2.store.PageStore.allocatePage:(I)V
        end local 6 // int n
        18: .line 151
            iinc 5 /* i */ 1
            goto 13
        end local 5 // int i
        end local 4 // org.h2.store.PageStreamTrunk t
        19: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* pages */
            areturn
        end local 3 // org.h2.store.PageStreamTrunk$Iterator it
        end local 2 // int key
        end local 1 // java.util.BitSet pages
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   20     0   this  Lorg/h2/store/PageInputStream;
            1   20     1  pages  Ljava/util/BitSet;
            2   20     2    key  I
            5   20     3     it  Lorg/h2/store/PageStreamTrunk$Iterator;
            6   19     4      t  Lorg/h2/store/PageStreamTrunk;
           13   19     5      i  I
           14   18     6      n  I

  int getDataPage();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.store.PageInputStream this
         0: .line 164
            aload 0 /* this */
            getfield org.h2.store.PageInputStream.data:Lorg/h2/store/PageStreamData;
            invokevirtual org.h2.store.PageStreamData.getPos:()I
            ireturn
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/PageInputStream;

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.h2.store.PageInputStream this
         0: .line 170
            return
        end local 0 // org.h2.store.PageInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/PageInputStream;
}
SourceFile: "PageInputStream.java"
InnerClasses:
  Iterator = org.h2.store.PageStreamTrunk$Iterator of org.h2.store.PageStreamTrunk