public class org.h2.store.LobStorageBackend implements org.h2.store.LobStorageInterface
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.store.LobStorageBackend
  super_class: java.lang.Object
{
  public static final java.lang.String LOB_DATA_TABLE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "LOB_DATA"

  private static final java.lang.String LOB_SCHEMA;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "INFORMATION_SCHEMA"

  private static final java.lang.String LOBS;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "INFORMATION_SCHEMA.LOBS"

  private static final java.lang.String LOB_MAP;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "INFORMATION_SCHEMA.LOB_MAP"

  private static final java.lang.String LOB_DATA;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "INFORMATION_SCHEMA.LOB_DATA"

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

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

  org.h2.jdbc.JdbcConnection conn;
    descriptor: Lorg/h2/jdbc/JdbcConnection;
    flags: (0x0000) 

  final org.h2.engine.Database database;
    descriptor: Lorg/h2/engine/Database;
    flags: (0x0010) ACC_FINAL

  private final java.util.HashMap<java.lang.String, java.sql.PreparedStatement> prepared;
    descriptor: Ljava/util/HashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/HashMap<Ljava/lang/String;Ljava/sql/PreparedStatement;>;

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

  private final org.h2.tools.CompressTool compress;
    descriptor: Lorg/h2/tools/CompressTool;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long[] hashBlocks;
    descriptor: [J
    flags: (0x0002) ACC_PRIVATE

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 64
            ldc Lorg/h2/store/LobStorageBackend;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.h2.store.LobStorageBackend.$assertionsDisabled:Z
         3: .line 86
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.h2.engine.Database);
    descriptor: (Lorg/h2/engine/Database;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // org.h2.engine.Database database
         0: .line 98
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 91
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.h2.store.LobStorageBackend.prepared:Ljava/util/HashMap;
         2: .line 93
            aload 0 /* this */
            invokestatic org.h2.tools.CompressTool.getInstance:()Lorg/h2/tools/CompressTool;
            putfield org.h2.store.LobStorageBackend.compress:Lorg/h2/tools/CompressTool;
         3: .line 99
            aload 0 /* this */
            aload 1 /* database */
            putfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
         4: .line 100
            return
        end local 1 // org.h2.engine.Database database
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/h2/store/LobStorageBackend;
            0    5     1  database  Lorg/h2/engine/Database;
    MethodParameters:
          Name  Flags
      database  

  public void init();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // org.h2.store.LobStorageBackend this
         0: .line 104
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.init:Z
            ifeq 2
         1: .line 105
            return
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 1
            monitorenter
         3: .line 110
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.init:Z
            ifeq 6
         4: .line 111
            aload 1
            monitorexit
         5: return
         6: .line 113
      StackMap locals: org.h2.engine.Database
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.h2.store.LobStorageBackend.init:Z
         7: .line 114
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.getLobConnectionForRegularUse:()Lorg/h2/jdbc/JdbcConnection;
            putfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
         8: .line 115
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.getLobConnectionForInit:()Lorg/h2/jdbc/JdbcConnection;
            astore 2 /* initConn */
        start local 2 // org.h2.jdbc.JdbcConnection initConn
         9: .line 117
            aload 2 /* initConn */
            invokevirtual org.h2.jdbc.JdbcConnection.createStatement:()Ljava/sql/Statement;
            astore 3 /* stat */
        start local 3 // java.sql.Statement stat
        10: .line 120
            iconst_1
            istore 4 /* create */
        start local 4 // boolean create
        11: .line 121
            aload 2 /* initConn */
        12: .line 122
            ldc "SELECT ZERO() FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=? AND TABLE_NAME=? AND COLUMN_NAME=?"
        13: .line 121
            invokevirtual org.h2.jdbc.JdbcConnection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 5 /* prep */
        start local 5 // java.sql.PreparedStatement prep
        14: .line 124
            aload 5 /* prep */
            iconst_1
            ldc "INFORMATION_SCHEMA"
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        15: .line 125
            aload 5 /* prep */
            iconst_2
            ldc "LOB_MAP"
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        16: .line 126
            aload 5 /* prep */
            iconst_3
            ldc "POS"
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        17: .line 128
            aload 5 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 6 /* rs */
        start local 6 // java.sql.ResultSet rs
        18: .line 129
            aload 6 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 27
        19: .line 130
            aload 2 /* initConn */
        20: .line 131
            ldc "SELECT ZERO() FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=? AND TABLE_NAME=?"
        21: .line 130
            invokevirtual org.h2.jdbc.JdbcConnection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 5 /* prep */
        22: .line 133
            aload 5 /* prep */
            iconst_1
            ldc "INFORMATION_SCHEMA"
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        23: .line 134
            aload 5 /* prep */
            iconst_2
            ldc "LOB_DATA"
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        24: .line 135
            aload 5 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 6 /* rs */
        25: .line 136
            aload 6 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 27
        26: .line 137
            iconst_0
            istore 4 /* create */
        27: .line 140
      StackMap locals: org.h2.store.LobStorageBackend org.h2.engine.Database org.h2.jdbc.JdbcConnection java.sql.Statement int java.sql.PreparedStatement java.sql.ResultSet
      StackMap stack:
            iload 4 /* create */
            ifeq 36
        28: .line 141
            aload 3 /* stat */
            ldc "CREATE CACHED TABLE IF NOT EXISTS INFORMATION_SCHEMA.LOBS(ID BIGINT PRIMARY KEY, BYTE_COUNT BIGINT, `TABLE` INT) HIDDEN"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        29: .line 143
            aload 3 /* stat */
            ldc "CREATE INDEX IF NOT EXISTS INFORMATION_SCHEMA.INDEX_LOB_TABLE ON INFORMATION_SCHEMA.LOBS(`TABLE`)"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        30: .line 146
            aload 3 /* stat */
            ldc "CREATE CACHED TABLE IF NOT EXISTS INFORMATION_SCHEMA.LOB_MAP(LOB BIGINT, SEQ INT, POS BIGINT, HASH INT, BLOCK BIGINT, PRIMARY KEY(LOB, SEQ)) HIDDEN"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        31: .line 149
            aload 3 /* stat */
            ldc "ALTER TABLE INFORMATION_SCHEMA.LOB_MAP RENAME TO INFORMATION_SCHEMA.LOB_MAP HIDDEN"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        32: .line 151
            aload 3 /* stat */
            ldc "ALTER TABLE INFORMATION_SCHEMA.LOB_MAP ADD IF NOT EXISTS POS BIGINT BEFORE HASH"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        33: .line 155
            aload 3 /* stat */
            ldc "ALTER TABLE INFORMATION_SCHEMA.LOB_MAP DROP COLUMN IF EXISTS \"OFFSET\""
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        34: .line 157
            aload 3 /* stat */
            ldc "CREATE INDEX IF NOT EXISTS INFORMATION_SCHEMA.INDEX_LOB_MAP_DATA_LOB ON INFORMATION_SCHEMA.LOB_MAP(BLOCK, LOB)"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        35: .line 160
            aload 3 /* stat */
            ldc "CREATE CACHED TABLE IF NOT EXISTS INFORMATION_SCHEMA.LOB_DATA(BLOCK BIGINT PRIMARY KEY, COMPRESSED INT, DATA BINARY) HIDDEN"
            invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
            pop
        36: .line 164
      StackMap locals:
      StackMap stack:
            aload 3 /* stat */
            ldc "SELECT MAX(BLOCK) FROM INFORMATION_SCHEMA.LOB_DATA"
            invokeinterface java.sql.Statement.executeQuery:(Ljava/lang/String;)Ljava/sql/ResultSet;
            astore 6 /* rs */
        37: .line 165
            aload 6 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            pop
        38: .line 166
            aload 0 /* this */
            aload 6 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getLong:(I)J
            lconst_1
            ladd
            putfield org.h2.store.LobStorageBackend.nextBlock:J
        39: .line 167
            aload 3 /* stat */
            invokeinterface java.sql.Statement.close:()V
        end local 6 // java.sql.ResultSet rs
        end local 5 // java.sql.PreparedStatement prep
        end local 4 // boolean create
        end local 3 // java.sql.Statement stat
        40: .line 168
            goto 43
      StackMap locals: org.h2.store.LobStorageBackend org.h2.engine.Database org.h2.jdbc.JdbcConnection
      StackMap stack: java.sql.SQLException
        41: astore 3 /* e */
        start local 3 // java.sql.SQLException e
        42: .line 169
            aload 3 /* e */
            invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
            athrow
        end local 3 // java.sql.SQLException e
        end local 2 // org.h2.jdbc.JdbcConnection initConn
        43: .line 107
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
        44: goto 47
      StackMap locals:
      StackMap stack: java.lang.Throwable
        45: aload 1
            monitorexit
        46: athrow
        47: .line 172
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   48     0      this  Lorg/h2/store/LobStorageBackend;
            9   43     2  initConn  Lorg/h2/jdbc/JdbcConnection;
           10   40     3      stat  Ljava/sql/Statement;
           11   40     4    create  Z
           14   40     5      prep  Ljava/sql/PreparedStatement;
           18   40     6        rs  Ljava/sql/ResultSet;
           42   43     3         e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           9    40      41  Class java.sql.SQLException
           3     5      45  any
           6    44      45  any
          45    46      45  any

  private long getNextLobId();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // org.h2.store.LobStorageBackend this
         0: .line 175
            ldc "SELECT MAX(LOB) FROM INFORMATION_SCHEMA.LOB_MAP"
            astore 1 /* sql */
        start local 1 // java.lang.String sql
         1: .line 176
            aload 0 /* this */
            aload 1 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 2 /* prep */
        start local 2 // java.sql.PreparedStatement prep
         2: .line 177
            aload 2 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 3 /* rs */
        start local 3 // java.sql.ResultSet rs
         3: .line 178
            aload 3 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            pop
         4: .line 179
            aload 3 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getLong:(I)J
            lconst_1
            ladd
            lstore 4 /* x */
        start local 4 // long x
         5: .line 180
            aload 0 /* this */
            aload 1 /* sql */
            aload 2 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
         6: .line 181
            ldc "SELECT MAX(ID) FROM INFORMATION_SCHEMA.LOBS"
            astore 1 /* sql */
         7: .line 182
            aload 0 /* this */
            aload 1 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 2 /* prep */
         8: .line 183
            aload 2 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 3 /* rs */
         9: .line 184
            aload 3 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            pop
        10: .line 185
            lload 4 /* x */
            aload 3 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getLong:(I)J
            lconst_1
            ladd
            invokestatic java.lang.Math.max:(JJ)J
            lstore 4 /* x */
        11: .line 186
            aload 0 /* this */
            aload 1 /* sql */
            aload 2 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        12: .line 187
            lload 4 /* x */
            lreturn
        end local 4 // long x
        end local 3 // java.sql.ResultSet rs
        end local 2 // java.sql.PreparedStatement prep
        end local 1 // java.lang.String sql
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/h2/store/LobStorageBackend;
            1   13     1   sql  Ljava/lang/String;
            2   13     2  prep  Ljava/sql/PreparedStatement;
            3   13     3    rs  Ljava/sql/ResultSet;
            5   13     4     x  J
    Exceptions:
      throws java.sql.SQLException

  public void removeAllForTable(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // int tableId
         0: .line 192
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.init:()V
         1: .line 194
            ldc "SELECT ID FROM INFORMATION_SCHEMA.LOBS WHERE `TABLE` = ?"
            astore 2 /* sql */
        start local 2 // java.lang.String sql
         2: .line 195
            aload 0 /* this */
            aload 2 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 3 /* prep */
        start local 3 // java.sql.PreparedStatement prep
         3: .line 196
            aload 3 /* prep */
            iconst_1
            iload 1 /* tableId */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         4: .line 197
            aload 3 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 4 /* rs */
        start local 4 // java.sql.ResultSet rs
         5: .line 198
            goto 7
         6: .line 199
      StackMap locals: java.lang.String java.sql.PreparedStatement java.sql.ResultSet
      StackMap stack:
            aload 0 /* this */
            aload 4 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getLong:(I)J
            invokevirtual org.h2.store.LobStorageBackend.removeLob:(J)V
         7: .line 198
      StackMap locals:
      StackMap stack:
            aload 4 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 6
         8: .line 201
            aload 0 /* this */
            aload 2 /* sql */
            aload 3 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        end local 4 // java.sql.ResultSet rs
        end local 3 // java.sql.PreparedStatement prep
        end local 2 // java.lang.String sql
         9: .line 202
            goto 12
      StackMap locals: org.h2.store.LobStorageBackend int
      StackMap stack: java.sql.SQLException
        10: astore 2 /* e */
        start local 2 // java.sql.SQLException e
        11: .line 203
            aload 2 /* e */
            invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
            athrow
        end local 2 // java.sql.SQLException e
        12: .line 205
      StackMap locals:
      StackMap stack:
            iload 1 /* tableId */
            iconst_m1
            if_icmpne 15
        13: .line 206
            aload 0 /* this */
            bipush -2
            invokevirtual org.h2.store.LobStorageBackend.removeAllForTable:(I)V
        14: .line 207
            aload 0 /* this */
            bipush -3
            invokevirtual org.h2.store.LobStorageBackend.removeAllForTable:(I)V
        15: .line 209
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int tableId
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lorg/h2/store/LobStorageBackend;
            0   16     1  tableId  I
            2    9     2      sql  Ljava/lang/String;
            3    9     3     prep  Ljava/sql/PreparedStatement;
            5    9     4       rs  Ljava/sql/ResultSet;
           11   12     2        e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           1     9      10  Class java.sql.SQLException
    MethodParameters:
         Name  Flags
      tableId  

  byte[] readBlock(long);
    descriptor: (J)[B
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // long block
         0: .line 219
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
         1: .line 220
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 3
            monitorenter
         2: .line 221
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            dup
            astore 4
            monitorenter
         3: .line 222
            ldc "SELECT COMPRESSED, DATA FROM INFORMATION_SCHEMA.LOB_DATA WHERE BLOCK = ?"
            astore 5 /* sql */
        start local 5 // java.lang.String sql
         4: .line 224
            aload 0 /* this */
            aload 5 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 6 /* prep */
        start local 6 // java.sql.PreparedStatement prep
         5: .line 225
            aload 6 /* prep */
            iconst_1
            lload 1 /* block */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
         6: .line 226
            aload 6 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 7 /* rs */
        start local 7 // java.sql.ResultSet rs
         7: .line 227
            aload 7 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 11
         8: .line 228
            ldc 90028
         9: .line 229
            new java.lang.StringBuilder
            dup
            ldc "Missing lob entry, block: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 1 /* block */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 228
            invokestatic org.h2.message.DbException.getJdbcSQLException:(ILjava/lang/String;)Ljava/sql/SQLException;
            athrow
        11: .line 231
      StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface java.lang.String java.sql.PreparedStatement java.sql.ResultSet
      StackMap stack:
            aload 7 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getInt:(I)I
            istore 8 /* compressed */
        start local 8 // int compressed
        12: .line 232
            aload 7 /* rs */
            iconst_2
            invokeinterface java.sql.ResultSet.getBytes:(I)[B
            astore 9 /* buffer */
        start local 9 // byte[] buffer
        13: .line 233
            iload 8 /* compressed */
            ifeq 15
        14: .line 234
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.compress:Lorg/h2/tools/CompressTool;
            aload 9 /* buffer */
            invokevirtual org.h2.tools.CompressTool.expand:([B)[B
            astore 9 /* buffer */
        15: .line 236
      StackMap locals: int byte[]
      StackMap stack:
            aload 0 /* this */
            aload 5 /* sql */
            aload 6 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        16: .line 237
            aload 9 /* buffer */
            aload 4
            monitorexit
        17: aload 3
            monitorexit
        18: areturn
        end local 9 // byte[] buffer
        end local 8 // int compressed
        end local 7 // java.sql.ResultSet rs
        end local 6 // java.sql.PreparedStatement prep
        end local 5 // java.lang.String sql
        19: .line 221
      StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface
      StackMap stack: java.lang.Throwable
            aload 4
            monitorexit
        20: athrow
        21: .line 220
      StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        22: athrow
        end local 1 // long block
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lorg/h2/store/LobStorageBackend;
            0   23     1       block  J
            4   19     5         sql  Ljava/lang/String;
            5   19     6        prep  Ljava/sql/PreparedStatement;
            7   19     7          rs  Ljava/sql/ResultSet;
           12   19     8  compressed  I
           13   19     9      buffer  [B
      Exception table:
        from    to  target  type
           3    17      19  any
          19    20      19  any
           2    18      21  any
          19    22      21  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
       Name  Flags
      block  

  java.sql.PreparedStatement prepare(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/sql/PreparedStatement;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // java.lang.String sql
         0: .line 249
            getstatic org.h2.store.LobStorageBackend.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 250
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.prepared:Ljava/util/HashMap;
            aload 1 /* sql */
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.sql.PreparedStatement
            astore 2 /* prep */
        start local 2 // java.sql.PreparedStatement prep
         2: .line 251
            aload 2 /* prep */
            ifnonnull 4
         3: .line 252
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            aload 1 /* sql */
            invokevirtual org.h2.jdbc.JdbcConnection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 2 /* prep */
         4: .line 254
      StackMap locals: java.sql.PreparedStatement
      StackMap stack:
            aload 2 /* prep */
            areturn
        end local 2 // java.sql.PreparedStatement prep
        end local 1 // java.lang.String sql
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/h2/store/LobStorageBackend;
            0    5     1   sql  Ljava/lang/String;
            2    5     2  prep  Ljava/sql/PreparedStatement;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      sql   

  void reuse(java.lang.String, java.sql.PreparedStatement);
    descriptor: (Ljava/lang/String;Ljava/sql/PreparedStatement;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // java.lang.String sql
        start local 2 // java.sql.PreparedStatement prep
         0: .line 264
            getstatic org.h2.store.LobStorageBackend.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 265
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.prepared:Ljava/util/HashMap;
            aload 1 /* sql */
            aload 2 /* prep */
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 266
            return
        end local 2 // java.sql.PreparedStatement prep
        end local 1 // java.lang.String sql
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/store/LobStorageBackend;
            0    3     1   sql  Ljava/lang/String;
            0    3     2  prep  Ljava/sql/PreparedStatement;
    MethodParameters:
      Name  Flags
      sql   
      prep  

  public void removeLob(org.h2.value.ValueLobDb);
    descriptor: (Lorg/h2/value/ValueLobDb;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // org.h2.value.ValueLobDb lob
         0: .line 270
            aload 0 /* this */
            aload 1 /* lob */
            invokevirtual org.h2.value.ValueLobDb.getLobId:()J
            invokevirtual org.h2.store.LobStorageBackend.removeLob:(J)V
         1: .line 271
            return
        end local 1 // org.h2.value.ValueLobDb lob
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/store/LobStorageBackend;
            0    2     1   lob  Lorg/h2/value/ValueLobDb;
    MethodParameters:
      Name  Flags
      lob   

  private void removeLob(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=12, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // long lobId
         0: .line 276
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
         1: .line 277
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 3
            monitorenter
         2: .line 278
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            dup
            astore 4
            monitorenter
         3: .line 279
            ldc "SELECT BLOCK, HASH FROM INFORMATION_SCHEMA.LOB_MAP D WHERE D.LOB = ? AND NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.LOB_MAP O WHERE O.BLOCK = D.BLOCK AND O.LOB <> ?)"
            astore 5 /* sql */
        start local 5 // java.lang.String sql
         4: .line 282
            aload 0 /* this */
            aload 5 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 6 /* prep */
        start local 6 // java.sql.PreparedStatement prep
         5: .line 283
            aload 6 /* prep */
            iconst_1
            lload 1 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
         6: .line 284
            aload 6 /* prep */
            iconst_2
            lload 1 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
         7: .line 285
            aload 6 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 7 /* rs */
        start local 7 // java.sql.ResultSet rs
         8: .line 286
            invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
            astore 8 /* blocks */
        start local 8 // java.util.ArrayList blocks
         9: .line 287
            goto 13
        10: .line 288
      StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface java.lang.String java.sql.PreparedStatement java.sql.ResultSet java.util.ArrayList
      StackMap stack:
            aload 8 /* blocks */
            aload 7 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getLong:(I)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        11: .line 289
            aload 7 /* rs */
            iconst_2
            invokeinterface java.sql.ResultSet.getInt:(I)I
            istore 9 /* hash */
        start local 9 // int hash
        12: .line 290
            aload 0 /* this */
            iload 9 /* hash */
            ldc -1
            invokevirtual org.h2.store.LobStorageBackend.setHashCacheBlock:(IJ)V
        end local 9 // int hash
        13: .line 287
      StackMap locals:
      StackMap stack:
            aload 7 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 10
        14: .line 292
            aload 0 /* this */
            aload 5 /* sql */
            aload 6 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        15: .line 294
            ldc "DELETE FROM INFORMATION_SCHEMA.LOB_MAP WHERE LOB = ?"
            astore 5 /* sql */
        16: .line 295
            aload 0 /* this */
            aload 5 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 6 /* prep */
        17: .line 296
            aload 6 /* prep */
            iconst_1
            lload 1 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        18: .line 297
            aload 6 /* prep */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        19: .line 298
            aload 0 /* this */
            aload 5 /* sql */
            aload 6 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        20: .line 300
            ldc "DELETE FROM INFORMATION_SCHEMA.LOB_DATA WHERE BLOCK = ?"
            astore 5 /* sql */
        21: .line 301
            aload 0 /* this */
            aload 5 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 6 /* prep */
        22: .line 302
            aload 8 /* blocks */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 11
            goto 26
      StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface java.lang.String java.sql.PreparedStatement java.sql.ResultSet java.util.ArrayList top top java.util.Iterator
      StackMap stack:
        23: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lstore 9 /* block */
        start local 9 // long block
        24: .line 303
            aload 6 /* prep */
            iconst_1
            lload 9 /* block */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        25: .line 304
            aload 6 /* prep */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        end local 9 // long block
        26: .line 302
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 23
        27: .line 306
            aload 0 /* this */
            aload 5 /* sql */
            aload 6 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        28: .line 308
            ldc "DELETE FROM INFORMATION_SCHEMA.LOBS WHERE ID = ?"
            astore 5 /* sql */
        29: .line 309
            aload 0 /* this */
            aload 5 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 6 /* prep */
        30: .line 310
            aload 6 /* prep */
            iconst_1
            lload 1 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        31: .line 311
            aload 6 /* prep */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        32: .line 312
            aload 0 /* this */
            aload 5 /* sql */
            aload 6 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        end local 8 // java.util.ArrayList blocks
        end local 7 // java.sql.ResultSet rs
        end local 6 // java.sql.PreparedStatement prep
        end local 5 // java.lang.String sql
        33: .line 278
            aload 4
            monitorexit
        34: goto 37
      StackMap locals: org.h2.store.LobStorageBackend long org.h2.engine.Database org.h2.engine.SessionInterface
      StackMap stack: java.lang.Throwable
        35: aload 4
            monitorexit
        36: athrow
        37: .line 277
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        38: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        39: aload 3
            monitorexit
        40: athrow
        41: .line 315
      StackMap locals: org.h2.store.LobStorageBackend long
      StackMap stack: java.sql.SQLException
            astore 3 /* e */
        start local 3 // java.sql.SQLException e
        42: .line 316
            aload 3 /* e */
            invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
            athrow
        end local 3 // java.sql.SQLException e
        43: .line 318
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long lobId
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   44     0    this  Lorg/h2/store/LobStorageBackend;
            0   44     1   lobId  J
            4   33     5     sql  Ljava/lang/String;
            5   33     6    prep  Ljava/sql/PreparedStatement;
            8   33     7      rs  Ljava/sql/ResultSet;
            9   33     8  blocks  Ljava/util/ArrayList<Ljava/lang/Long;>;
           12   13     9    hash  I
           24   26     9   block  J
           42   43     3       e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           3    34      35  any
          35    36      35  any
           2    38      39  any
          39    40      39  any
           0    41      41  Class java.sql.SQLException
    MethodParameters:
       Name  Flags
      lobId  

  public java.io.InputStream getInputStream(org.h2.value.ValueLobDb, byte[], long);
    descriptor: (Lorg/h2/value/ValueLobDb;[BJ)Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=4
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // org.h2.value.ValueLobDb lob
        start local 2 // byte[] hmac
        start local 3 // long byteCount
         0: .line 324
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.init:()V
         1: .line 325
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
         2: .line 327
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 5
            monitorenter
         3: .line 328
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            dup
            astore 6
            monitorenter
         4: .line 329
            aload 1 /* lob */
            invokevirtual org.h2.value.ValueLobDb.getLobId:()J
            lstore 7 /* lobId */
        start local 7 // long lobId
         5: .line 330
            new org.h2.store.LobStorageBackend$LobInputStream
            dup
            aload 0 /* this */
            lload 7 /* lobId */
            lload 3 /* byteCount */
            invokespecial org.h2.store.LobStorageBackend$LobInputStream.<init>:(Lorg/h2/store/LobStorageBackend;JJ)V
            aload 6
            monitorexit
         6: aload 5
            monitorexit
         7: areturn
        end local 7 // long lobId
         8: .line 328
      StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb byte[] long org.h2.engine.Database org.h2.engine.SessionInterface
      StackMap stack: java.lang.Throwable
            aload 6
            monitorexit
         9: athrow
        10: .line 327
      StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb byte[] long org.h2.engine.Database
      StackMap stack: java.lang.Throwable
            aload 5
            monitorexit
        11: athrow
        12: .line 333
      StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb byte[] long
      StackMap stack: java.sql.SQLException
            astore 5 /* e */
        start local 5 // java.sql.SQLException e
        13: .line 334
            aload 5 /* e */
            invokestatic org.h2.message.DbException.convertToIOException:(Ljava/lang/Throwable;)Ljava/io/IOException;
            athrow
        end local 5 // java.sql.SQLException e
        end local 3 // long byteCount
        end local 2 // byte[] hmac
        end local 1 // org.h2.value.ValueLobDb lob
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/h2/store/LobStorageBackend;
            0   14     1        lob  Lorg/h2/value/ValueLobDb;
            0   14     2       hmac  [B
            0   14     3  byteCount  J
            5    8     7      lobId  J
           13   14     5          e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           4     6       8  any
           8     9       8  any
           3     7      10  any
           8    11      10  any
           0     7      12  Class java.sql.SQLException
           8    12      12  Class java.sql.SQLException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      lob        
      hmac       
      byteCount  

  private org.h2.value.ValueLobDb addLob(java.io.InputStream, long, int, org.h2.store.CountingReaderInputStream);
    descriptor: (Ljava/io/InputStream;JILorg/h2/store/CountingReaderInputStream;)Lorg/h2/value/ValueLobDb;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=19, args_size=5
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // java.io.InputStream in
        start local 2 // long maxLength
        start local 4 // int type
        start local 5 // org.h2.store.CountingReaderInputStream countingReaderForClob
         0: .line 341
            sipush 20000
            newarray 8
            astore 6 /* buff */
        start local 6 // byte[] buff
         1: .line 342
            lload 2 /* maxLength */
            lconst_0
            lcmp
            ifge 3
         2: .line 343
            ldc 9223372036854775807
            lstore 2 /* maxLength */
         3: .line 345
      StackMap locals: byte[]
      StackMap stack:
            lconst_0
            lstore 7 /* length */
        start local 7 // long length
         4: .line 346
            ldc -1
            lstore 9 /* lobId */
        start local 9 // long lobId
         5: .line 347
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.getMaxLengthInplaceLob:()I
            istore 11 /* maxLengthInPlaceLob */
        start local 11 // int maxLengthInPlaceLob
         6: .line 348
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            iload 4 /* type */
            invokevirtual org.h2.engine.Database.getLobCompressionAlgorithm:(I)Ljava/lang/String;
            astore 12 /* compressAlgorithm */
        start local 12 // java.lang.String compressAlgorithm
         7: .line 350
            aconst_null
            astore 13 /* small */
        start local 13 // byte[] small
         8: .line 351
            iconst_0
            istore 14 /* seq */
        start local 14 // int seq
         9: goto 39
        10: .line 352
      StackMap locals: org.h2.store.LobStorageBackend java.io.InputStream long int org.h2.store.CountingReaderInputStream byte[] long long int java.lang.String byte[] int
      StackMap stack:
            ldc 20000
            lload 2 /* maxLength */
            invokestatic java.lang.Math.min:(JJ)J
            l2i
            istore 15 /* len */
        start local 15 // int len
        11: .line 353
            aload 1 /* in */
            aload 6 /* buff */
            iload 15 /* len */
            invokestatic org.h2.util.IOUtils.readFully:(Ljava/io/InputStream;[BI)I
            istore 15 /* len */
        12: .line 354
            iload 15 /* len */
            ifgt 14
        13: .line 355
            goto 40
        14: .line 357
      StackMap locals: int
      StackMap stack:
            lload 2 /* maxLength */
            iload 15 /* len */
            i2l
            lsub
            lstore 2 /* maxLength */
        15: .line 360
            iload 15 /* len */
            aload 6 /* buff */
            arraylength
            if_icmpeq 18
        16: .line 361
            aload 6 /* buff */
            iload 15 /* len */
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 16 /* b */
        start local 16 // byte[] b
        17: .line 362
            goto 19
        end local 16 // byte[] b
        18: .line 363
      StackMap locals:
      StackMap stack:
            aload 6 /* buff */
            astore 16 /* b */
        start local 16 // byte[] b
        19: .line 365
      StackMap locals: byte[]
      StackMap stack:
            iload 14 /* seq */
            ifne 23
            aload 16 /* b */
            arraylength
            sipush 20000
            if_icmpge 23
        20: .line 366
            aload 16 /* b */
            arraylength
            iload 11 /* maxLengthInPlaceLob */
            if_icmpgt 23
        21: .line 367
            aload 16 /* b */
            astore 13 /* small */
        22: .line 368
            goto 40
        23: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
        24: .line 372
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 17
            monitorenter
        25: .line 373
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            dup
            astore 18
            monitorenter
        26: .line 374
            iload 14 /* seq */
            ifne 28
        27: .line 375
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.getNextLobId:()J
            lstore 9 /* lobId */
        28: .line 377
      StackMap locals: org.h2.engine.Database org.h2.engine.SessionInterface
      StackMap stack:
            aload 0 /* this */
            lload 9 /* lobId */
            iload 14 /* seq */
            lload 7 /* length */
            aload 16 /* b */
            aload 12 /* compressAlgorithm */
            invokevirtual org.h2.store.LobStorageBackend.storeBlock:(JIJ[BLjava/lang/String;)V
        29: .line 373
            aload 18
            monitorexit
        30: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 18
            monitorexit
        32: athrow
        33: .line 372
      StackMap locals:
      StackMap stack:
            aload 17
            monitorexit
        34: goto 37
      StackMap locals:
      StackMap stack: java.lang.Throwable
        35: aload 17
            monitorexit
        36: athrow
        37: .line 380
      StackMap locals:
      StackMap stack:
            lload 7 /* length */
            iload 15 /* len */
            i2l
            ladd
            lstore 7 /* length */
        end local 16 // byte[] b
        end local 15 // int len
        38: .line 351
            iinc 14 /* seq */ 1
      StackMap locals:
      StackMap stack:
        39: lload 2 /* maxLength */
            lconst_0
            lcmp
            ifgt 10
        end local 14 // int seq
        40: .line 382
      StackMap locals:
      StackMap stack:
            lload 9 /* lobId */
            ldc -1
            lcmp
            ifne 42
            aload 13 /* small */
            ifnonnull 42
        41: .line 384
            iconst_0
            newarray 8
            astore 13 /* small */
        42: .line 386
      StackMap locals:
      StackMap stack:
            aload 13 /* small */
            ifnull 49
        43: .line 389
            aload 5 /* countingReaderForClob */
            ifnonnull 45
        44: .line 390
            aload 13 /* small */
            arraylength
            i2l
            goto 46
      StackMap locals:
      StackMap stack:
        45: aload 5 /* countingReaderForClob */
            invokevirtual org.h2.store.CountingReaderInputStream.getLength:()J
        46: .line 389
      StackMap locals:
      StackMap stack: long
            lstore 14 /* precision */
        start local 14 // long precision
        47: .line 391
            iload 4 /* type */
            aload 13 /* small */
            lload 14 /* precision */
            invokestatic org.h2.value.ValueLobDb.createSmallLob:(I[BJ)Lorg/h2/value/ValueLobDb;
        48: areturn
        end local 14 // long precision
        49: .line 395
      StackMap locals:
      StackMap stack:
            aload 5 /* countingReaderForClob */
            ifnonnull 51
        50: .line 396
            lload 7 /* length */
            goto 52
      StackMap locals:
      StackMap stack:
        51: aload 5 /* countingReaderForClob */
            invokevirtual org.h2.store.CountingReaderInputStream.getLength:()J
        52: .line 395
      StackMap locals:
      StackMap stack: long
            lstore 14 /* precision */
        start local 14 // long precision
        53: .line 397
            aload 0 /* this */
            iload 4 /* type */
            lload 9 /* lobId */
        54: .line 398
            bipush -2
            lload 7 /* length */
            lload 14 /* precision */
        55: .line 397
            invokevirtual org.h2.store.LobStorageBackend.registerLob:(IJIJJ)Lorg/h2/value/ValueLobDb;
        56: areturn
        end local 14 // long precision
        end local 13 // byte[] small
        57: .line 399
      StackMap locals: org.h2.store.LobStorageBackend java.io.InputStream long int org.h2.store.CountingReaderInputStream byte[] long long int java.lang.String
      StackMap stack: java.io.IOException
            astore 13 /* e */
        start local 13 // java.io.IOException e
        58: .line 400
            lload 9 /* lobId */
            ldc -1
            lcmp
            ifeq 60
        59: .line 401
            aload 0 /* this */
            lload 9 /* lobId */
            invokevirtual org.h2.store.LobStorageBackend.removeLob:(J)V
        60: .line 403
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 13 /* e */
            aconst_null
            invokestatic org.h2.message.DbException.convertIOException:(Ljava/io/IOException;Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        end local 13 // java.io.IOException e
        end local 12 // java.lang.String compressAlgorithm
        end local 11 // int maxLengthInPlaceLob
        end local 9 // long lobId
        end local 7 // long length
        end local 6 // byte[] buff
        61: .line 405
      StackMap locals: org.h2.store.LobStorageBackend java.io.InputStream long int org.h2.store.CountingReaderInputStream
      StackMap stack: java.sql.SQLException
            astore 6 /* e */
        start local 6 // java.sql.SQLException e
        62: .line 406
            aload 6 /* e */
            invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
            athrow
        end local 6 // java.sql.SQLException e
        end local 5 // org.h2.store.CountingReaderInputStream countingReaderForClob
        end local 4 // int type
        end local 2 // long maxLength
        end local 1 // java.io.InputStream in
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   63     0                   this  Lorg/h2/store/LobStorageBackend;
            0   63     1                     in  Ljava/io/InputStream;
            0   63     2              maxLength  J
            0   63     4                   type  I
            0   63     5  countingReaderForClob  Lorg/h2/store/CountingReaderInputStream;
            1   61     6                   buff  [B
            4   61     7                 length  J
            5   61     9                  lobId  J
            6   61    11    maxLengthInPlaceLob  I
            7   61    12      compressAlgorithm  Ljava/lang/String;
            8   57    13                  small  [B
            9   40    14                    seq  I
           11   38    15                    len  I
           17   18    16                      b  [B
           19   38    16                      b  [B
           47   49    14              precision  J
           53   57    14              precision  J
           58   61    13                      e  Ljava/io/IOException;
           62   63     6                      e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
          26    30      31  any
          31    32      31  any
          25    34      35  any
          35    36      35  any
           7    48      57  Class java.io.IOException
          49    56      57  Class java.io.IOException
           0    48      61  Class java.sql.SQLException
          49    56      61  Class java.sql.SQLException
          57    61      61  Class java.sql.SQLException
    MethodParameters:
                       Name  Flags
      in                     
      maxLength              
      type                   
      countingReaderForClob  

  private org.h2.value.ValueLobDb registerLob(int, long, int, long, long);
    descriptor: (IJIJJ)Lorg/h2/value/ValueLobDb;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=13, args_size=6
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // int type
        start local 2 // long lobId
        start local 4 // int tableId
        start local 5 // long byteCount
        start local 7 // long precision
         0: .line 412
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
         1: .line 414
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 9
            monitorenter
         2: .line 415
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            dup
            astore 10
            monitorenter
         3: .line 416
            ldc "INSERT INTO INFORMATION_SCHEMA.LOBS(ID, BYTE_COUNT, `TABLE`) VALUES(?, ?, ?)"
            astore 11 /* sql */
        start local 11 // java.lang.String sql
         4: .line 418
            aload 0 /* this */
            aload 11 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 12 /* prep */
        start local 12 // java.sql.PreparedStatement prep
         5: .line 419
            aload 12 /* prep */
            iconst_1
            lload 2 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
         6: .line 420
            aload 12 /* prep */
            iconst_2
            lload 5 /* byteCount */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
         7: .line 421
            aload 12 /* prep */
            iconst_3
            iload 4 /* tableId */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         8: .line 422
            aload 12 /* prep */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
         9: .line 423
            aload 0 /* this */
            aload 11 /* sql */
            aload 12 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        10: .line 424
            iload 1 /* type */
        11: .line 425
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            iload 4 /* tableId */
            lload 2 /* lobId */
            aconst_null
            lload 7 /* precision */
        12: .line 424
            invokestatic org.h2.value.ValueLobDb.create:(ILorg/h2/store/DataHandler;IJ[BJ)Lorg/h2/value/ValueLobDb;
            aload 10
            monitorexit
        13: aload 9
            monitorexit
        14: areturn
        end local 12 // java.sql.PreparedStatement prep
        end local 11 // java.lang.String sql
        15: .line 415
      StackMap locals: org.h2.store.LobStorageBackend int long int long long org.h2.engine.Database org.h2.engine.SessionInterface
      StackMap stack: java.lang.Throwable
            aload 10
            monitorexit
        16: athrow
        17: .line 414
      StackMap locals: org.h2.store.LobStorageBackend int long int long long org.h2.engine.Database
      StackMap stack: java.lang.Throwable
            aload 9
            monitorexit
        18: athrow
        end local 7 // long precision
        end local 5 // long byteCount
        end local 4 // int tableId
        end local 2 // long lobId
        end local 1 // int type
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   19     0       this  Lorg/h2/store/LobStorageBackend;
            0   19     1       type  I
            0   19     2      lobId  J
            0   19     4    tableId  I
            0   19     5  byteCount  J
            0   19     7  precision  J
            4   15    11        sql  Ljava/lang/String;
            5   15    12       prep  Ljava/sql/PreparedStatement;
      Exception table:
        from    to  target  type
           3    13      15  any
          15    16      15  any
           2    14      17  any
          15    18      17  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
           Name  Flags
      type       
      lobId      
      tableId    
      byteCount  
      precision  

  public boolean isReadOnly();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.store.LobStorageBackend this
         0: .line 432
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.isReadOnly:()Z
            ireturn
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/store/LobStorageBackend;

  public org.h2.value.ValueLobDb copyLob(org.h2.value.ValueLobDb, int, long);
    descriptor: (Lorg/h2/value/ValueLobDb;IJ)Lorg/h2/value/ValueLobDb;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=15, args_size=4
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // org.h2.value.ValueLobDb old
        start local 2 // int tableId
        start local 3 // long length
         0: .line 437
            aload 1 /* old */
            invokevirtual org.h2.value.ValueLobDb.getValueType:()I
            istore 5 /* type */
        start local 5 // int type
         1: .line 438
            aload 1 /* old */
            invokevirtual org.h2.value.ValueLobDb.getLobId:()J
            lstore 6 /* oldLobId */
        start local 6 // long oldLobId
         2: .line 439
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertNotHolds:(Ljava/lang/Object;)V
         3: .line 441
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            dup
            astore 8
            monitorenter
         4: .line 442
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            dup
            astore 9
            monitorenter
         5: .line 444
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.init:()V
         6: .line 445
            aconst_null
            astore 10 /* v */
        start local 10 // org.h2.value.ValueLobDb v
         7: .line 446
            aload 1 /* old */
            invokevirtual org.h2.value.ValueLobDb.isRecoveryReference:()Z
            ifne 24
         8: .line 447
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.getNextLobId:()J
            lstore 11 /* lobId */
        start local 11 // long lobId
         9: .line 448
            ldc "INSERT INTO INFORMATION_SCHEMA.LOB_MAP(LOB, SEQ, POS, HASH, BLOCK) SELECT ?, SEQ, POS, HASH, BLOCK FROM INFORMATION_SCHEMA.LOB_MAP WHERE LOB = ?"
            astore 13 /* sql */
        start local 13 // java.lang.String sql
        10: .line 452
            aload 0 /* this */
            aload 13 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 14 /* prep */
        start local 14 // java.sql.PreparedStatement prep
        11: .line 453
            aload 14 /* prep */
            iconst_1
            lload 11 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        12: .line 454
            aload 14 /* prep */
            iconst_2
            lload 6 /* oldLobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        13: .line 455
            aload 14 /* prep */
            invokeinterface java.sql.PreparedStatement.executeUpdate:()I
            pop
        14: .line 456
            aload 0 /* this */
            aload 13 /* sql */
            aload 14 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        15: .line 458
            ldc "INSERT INTO INFORMATION_SCHEMA.LOBS(ID, BYTE_COUNT, `TABLE`) SELECT ?, BYTE_COUNT, ? FROM INFORMATION_SCHEMA.LOBS WHERE ID = ?"
            astore 13 /* sql */
        16: .line 462
            aload 0 /* this */
            aload 13 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 14 /* prep */
        17: .line 463
            aload 14 /* prep */
            iconst_1
            lload 11 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        18: .line 464
            aload 14 /* prep */
            iconst_2
            iload 2 /* tableId */
            i2l
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        19: .line 465
            aload 14 /* prep */
            iconst_3
            lload 6 /* oldLobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        20: .line 466
            aload 14 /* prep */
            invokeinterface java.sql.PreparedStatement.executeUpdate:()I
            pop
        21: .line 467
            aload 0 /* this */
            aload 13 /* sql */
            aload 14 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        22: .line 469
            iload 5 /* type */
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            iload 2 /* tableId */
            lload 11 /* lobId */
            aconst_null
            lload 3 /* length */
            invokestatic org.h2.value.ValueLobDb.create:(ILorg/h2/store/DataHandler;IJ[BJ)Lorg/h2/value/ValueLobDb;
            astore 10 /* v */
        end local 14 // java.sql.PreparedStatement prep
        end local 13 // java.lang.String sql
        end local 11 // long lobId
        23: .line 470
            goto 25
        24: .line 473
      StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb int long int long org.h2.engine.Database org.h2.engine.SessionInterface org.h2.value.ValueLobDb
      StackMap stack:
            iload 5 /* type */
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            iload 2 /* tableId */
            lload 6 /* oldLobId */
            aconst_null
            lload 3 /* length */
            invokestatic org.h2.value.ValueLobDb.create:(ILorg/h2/store/DataHandler;IJ[BJ)Lorg/h2/value/ValueLobDb;
            astore 10 /* v */
        25: .line 475
      StackMap locals:
      StackMap stack:
            aload 10 /* v */
        26: aload 9
            monitorexit
        27: aload 8
            monitorexit
        28: areturn
        end local 10 // org.h2.value.ValueLobDb v
        29: .line 476
      StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb int long int long org.h2.engine.Database org.h2.engine.SessionInterface
      StackMap stack: java.sql.SQLException
            astore 10 /* e */
        start local 10 // java.sql.SQLException e
        30: .line 477
            aload 10 /* e */
            invokestatic org.h2.message.DbException.convert:(Ljava/lang/Throwable;)Lorg/h2/message/DbException;
            athrow
        end local 10 // java.sql.SQLException e
        31: .line 442
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 9
            monitorexit
        32: athrow
        33: .line 441
      StackMap locals: org.h2.store.LobStorageBackend org.h2.value.ValueLobDb int long int long org.h2.engine.Database
      StackMap stack: java.lang.Throwable
            aload 8
            monitorexit
        34: athrow
        end local 6 // long oldLobId
        end local 5 // int type
        end local 3 // long length
        end local 2 // int tableId
        end local 1 // org.h2.value.ValueLobDb old
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   35     0      this  Lorg/h2/store/LobStorageBackend;
            0   35     1       old  Lorg/h2/value/ValueLobDb;
            0   35     2   tableId  I
            0   35     3    length  J
            1   35     5      type  I
            2   35     6  oldLobId  J
            7   29    10         v  Lorg/h2/value/ValueLobDb;
            9   23    11     lobId  J
           10   23    13       sql  Ljava/lang/String;
           11   23    14      prep  Ljava/sql/PreparedStatement;
           30   31    10         e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           5    26      29  Class java.sql.SQLException
           5    27      31  any
          29    32      31  any
           4    28      33  any
          29    34      33  any
    MethodParameters:
         Name  Flags
      old      
      tableId  
      length   

  private long getHashCacheBlock(int);
    descriptor: (I)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // int hash
         0: .line 485
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.initHashCache:()V
         1: .line 486
            iload 1 /* hash */
            sipush 4095
            iand
            istore 2 /* index */
        start local 2 // int index
         2: .line 487
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.hashBlocks:[J
            iload 2 /* index */
            laload
            lstore 3 /* oldHash */
        start local 3 // long oldHash
         3: .line 488
            lload 3 /* oldHash */
            iload 1 /* hash */
            i2l
            lcmp
            ifne 5
         4: .line 489
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.hashBlocks:[J
            iload 2 /* index */
            sipush 4096
            iadd
            laload
            lreturn
        end local 3 // long oldHash
        end local 2 // int index
         5: .line 492
      StackMap locals:
      StackMap stack:
            ldc -1
            lreturn
        end local 1 // int hash
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/h2/store/LobStorageBackend;
            0    6     1     hash  I
            2    5     2    index  I
            3    5     3  oldHash  J
    MethodParameters:
      Name  Flags
      hash  

  private void setHashCacheBlock(int, long);
    descriptor: (IJ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // int hash
        start local 2 // long block
         0: .line 497
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.initHashCache:()V
         1: .line 498
            iload 1 /* hash */
            sipush 4095
            iand
            istore 4 /* index */
        start local 4 // int index
         2: .line 499
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.hashBlocks:[J
            iload 4 /* index */
            iload 1 /* hash */
            i2l
            lastore
         3: .line 500
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.hashBlocks:[J
            iload 4 /* index */
            sipush 4096
            iadd
            lload 2 /* block */
            lastore
        end local 4 // int index
         4: .line 502
            return
        end local 2 // long block
        end local 1 // int hash
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/h2/store/LobStorageBackend;
            0    5     1   hash  I
            0    5     2  block  J
            2    4     4  index  I
    MethodParameters:
       Name  Flags
      hash   
      block  

  private void initHashCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.store.LobStorageBackend this
         0: .line 505
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.hashBlocks:[J
            ifnonnull 2
         1: .line 506
            aload 0 /* this */
            sipush 8192
            newarray 11
            putfield org.h2.store.LobStorageBackend.hashBlocks:[J
         2: .line 508
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/store/LobStorageBackend;

  void storeBlock(long, int, long, byte[], java.lang.String);
    descriptor: (JIJ[BLjava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=17, args_size=6
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // long lobId
        start local 3 // int seq
        start local 4 // long pos
        start local 6 // byte[] b
        start local 7 // java.lang.String compressAlgorithm
         0: .line 522
            iconst_0
            istore 10 /* blockExists */
        start local 10 // boolean blockExists
         1: .line 523
            aload 7 /* compressAlgorithm */
            ifnull 3
         2: .line 524
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.compress:Lorg/h2/tools/CompressTool;
            aload 6 /* b */
            aload 7 /* compressAlgorithm */
            invokevirtual org.h2.tools.CompressTool.compress:([BLjava/lang/String;)[B
            astore 6 /* b */
         3: .line 526
      StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String top top int
      StackMap stack:
            aload 6 /* b */
            invokestatic java.util.Arrays.hashCode:([B)I
            istore 11 /* hash */
        start local 11 // int hash
         4: .line 527
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.conn:Lorg/h2/jdbc/JdbcConnection;
            invokevirtual org.h2.jdbc.JdbcConnection.getSession:()Lorg/h2/engine/SessionInterface;
            invokestatic org.h2.store.LobStorageBackend.assertHoldsLock:(Ljava/lang/Object;)V
         5: .line 528
            aload 0 /* this */
            getfield org.h2.store.LobStorageBackend.database:Lorg/h2/engine/Database;
            invokestatic org.h2.store.LobStorageBackend.assertHoldsLock:(Ljava/lang/Object;)V
         6: .line 529
            aload 0 /* this */
            iload 11 /* hash */
            invokevirtual org.h2.store.LobStorageBackend.getHashCacheBlock:(I)J
            lstore 8 /* block */
        start local 8 // long block
         7: .line 530
            lload 8 /* block */
            ldc -1
            lcmp
            ifeq 22
         8: .line 531
            ldc "SELECT COMPRESSED, DATA FROM INFORMATION_SCHEMA.LOB_DATA WHERE BLOCK = ?"
            astore 12 /* sql */
        start local 12 // java.lang.String sql
         9: .line 533
            aload 0 /* this */
            aload 12 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 13 /* prep */
        start local 13 // java.sql.PreparedStatement prep
        10: .line 534
            aload 13 /* prep */
            iconst_1
            lload 8 /* block */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        11: .line 535
            aload 13 /* prep */
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 14 /* rs */
        start local 14 // java.sql.ResultSet rs
        12: .line 536
            aload 14 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifeq 21
        13: .line 537
            aload 14 /* rs */
            iconst_1
            invokeinterface java.sql.ResultSet.getInt:(I)I
            ifeq 14
            iconst_1
            goto 15
      StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement java.sql.ResultSet
      StackMap stack:
        14: iconst_0
      StackMap locals:
      StackMap stack: int
        15: istore 15 /* compressed */
        start local 15 // boolean compressed
        16: .line 538
            aload 14 /* rs */
            iconst_2
            invokeinterface java.sql.ResultSet.getBytes:(I)[B
            astore 16 /* compare */
        start local 16 // byte[] compare
        17: .line 539
            iload 15 /* compressed */
            aload 7 /* compressAlgorithm */
            ifnull 18
            iconst_1
            goto 19
      StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement java.sql.ResultSet int byte[]
      StackMap stack: int
        18: iconst_0
      StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement java.sql.ResultSet int byte[]
      StackMap stack: int int
        19: if_icmpne 21
            aload 6 /* b */
            aload 16 /* compare */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifeq 21
        20: .line 540
            iconst_1
            istore 10 /* blockExists */
        end local 16 // byte[] compare
        end local 15 // boolean compressed
        21: .line 543
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 12 /* sql */
            aload 13 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        end local 14 // java.sql.ResultSet rs
        end local 13 // java.sql.PreparedStatement prep
        end local 12 // java.lang.String sql
        22: .line 545
      StackMap locals:
      StackMap stack:
            iload 10 /* blockExists */
            ifne 34
        23: .line 546
            aload 0 /* this */
            dup
            getfield org.h2.store.LobStorageBackend.nextBlock:J
            dup2_x1
            lconst_1
            ladd
            putfield org.h2.store.LobStorageBackend.nextBlock:J
            lstore 8 /* block */
        24: .line 547
            aload 0 /* this */
            iload 11 /* hash */
            lload 8 /* block */
            invokevirtual org.h2.store.LobStorageBackend.setHashCacheBlock:(IJ)V
        25: .line 548
            ldc "INSERT INTO INFORMATION_SCHEMA.LOB_DATA(BLOCK, COMPRESSED, DATA) VALUES(?, ?, ?)"
            astore 12 /* sql */
        start local 12 // java.lang.String sql
        26: .line 550
            aload 0 /* this */
            aload 12 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 13 /* prep */
        start local 13 // java.sql.PreparedStatement prep
        27: .line 551
            aload 13 /* prep */
            iconst_1
            lload 8 /* block */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        28: .line 552
            aload 13 /* prep */
            iconst_2
            aload 7 /* compressAlgorithm */
            ifnonnull 29
            iconst_0
            goto 30
      StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement
      StackMap stack: java.sql.PreparedStatement int
        29: iconst_1
      StackMap locals: org.h2.store.LobStorageBackend long int long byte[] java.lang.String long int int java.lang.String java.sql.PreparedStatement
      StackMap stack: java.sql.PreparedStatement int int
        30: invokeinterface java.sql.PreparedStatement.setInt:(II)V
        31: .line 553
            aload 13 /* prep */
            iconst_3
            aload 6 /* b */
            invokeinterface java.sql.PreparedStatement.setBytes:(I[B)V
        32: .line 554
            aload 13 /* prep */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        33: .line 555
            aload 0 /* this */
            aload 12 /* sql */
            aload 13 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        end local 13 // java.sql.PreparedStatement prep
        end local 12 // java.lang.String sql
        34: .line 557
      StackMap locals:
      StackMap stack:
            ldc "INSERT INTO INFORMATION_SCHEMA.LOB_MAP(LOB, SEQ, POS, HASH, BLOCK) VALUES(?, ?, ?, ?, ?)"
            astore 12 /* sql */
        start local 12 // java.lang.String sql
        35: .line 559
            aload 0 /* this */
            aload 12 /* sql */
            invokevirtual org.h2.store.LobStorageBackend.prepare:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            astore 13 /* prep */
        start local 13 // java.sql.PreparedStatement prep
        36: .line 560
            aload 13 /* prep */
            iconst_1
            lload 1 /* lobId */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        37: .line 561
            aload 13 /* prep */
            iconst_2
            iload 3 /* seq */
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
        38: .line 562
            aload 13 /* prep */
            iconst_3
            lload 4 /* pos */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        39: .line 563
            aload 13 /* prep */
            iconst_4
            iload 11 /* hash */
            i2l
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        40: .line 564
            aload 13 /* prep */
            iconst_5
            lload 8 /* block */
            invokeinterface java.sql.PreparedStatement.setLong:(IJ)V
        41: .line 565
            aload 13 /* prep */
            invokeinterface java.sql.PreparedStatement.execute:()Z
            pop
        42: .line 566
            aload 0 /* this */
            aload 12 /* sql */
            aload 13 /* prep */
            invokevirtual org.h2.store.LobStorageBackend.reuse:(Ljava/lang/String;Ljava/sql/PreparedStatement;)V
        43: .line 567
            return
        end local 13 // java.sql.PreparedStatement prep
        end local 12 // java.lang.String sql
        end local 11 // int hash
        end local 10 // boolean blockExists
        end local 8 // long block
        end local 7 // java.lang.String compressAlgorithm
        end local 6 // byte[] b
        end local 4 // long pos
        end local 3 // int seq
        end local 1 // long lobId
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   44     0               this  Lorg/h2/store/LobStorageBackend;
            0   44     1              lobId  J
            0   44     3                seq  I
            0   44     4                pos  J
            0   44     6                  b  [B
            0   44     7  compressAlgorithm  Ljava/lang/String;
            7   44     8              block  J
            1   44    10        blockExists  Z
            4   44    11               hash  I
            9   22    12                sql  Ljava/lang/String;
           10   22    13               prep  Ljava/sql/PreparedStatement;
           12   22    14                 rs  Ljava/sql/ResultSet;
           16   21    15         compressed  Z
           17   21    16            compare  [B
           26   34    12                sql  Ljava/lang/String;
           27   34    13               prep  Ljava/sql/PreparedStatement;
           35   44    12                sql  Ljava/lang/String;
           36   44    13               prep  Ljava/sql/PreparedStatement;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
                   Name  Flags
      lobId              
      seq                
      pos                
      b                  
      compressAlgorithm  

  public org.h2.value.Value createBlob(java.io.InputStream, long);
    descriptor: (Ljava/io/InputStream;J)Lorg/h2/value/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // java.io.InputStream in
        start local 2 // long maxLength
         0: .line 571
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.init:()V
         1: .line 572
            aload 0 /* this */
            aload 1 /* in */
            lload 2 /* maxLength */
            bipush 15
            aconst_null
            invokevirtual org.h2.store.LobStorageBackend.addLob:(Ljava/io/InputStream;JILorg/h2/store/CountingReaderInputStream;)Lorg/h2/value/ValueLobDb;
            areturn
        end local 2 // long maxLength
        end local 1 // java.io.InputStream in
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/h2/store/LobStorageBackend;
            0    2     1         in  Ljava/io/InputStream;
            0    2     2  maxLength  J
    MethodParameters:
           Name  Flags
      in         
      maxLength  

  public org.h2.value.Value createClob(java.io.Reader, long);
    descriptor: (Ljava/io/Reader;J)Lorg/h2/value/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // org.h2.store.LobStorageBackend this
        start local 1 // java.io.Reader reader
        start local 2 // long maxLength
         0: .line 577
            aload 0 /* this */
            invokevirtual org.h2.store.LobStorageBackend.init:()V
         1: .line 578
            lload 2 /* maxLength */
            ldc -1
            lcmp
            ifne 2
            ldc 9223372036854775807
            goto 3
      StackMap locals:
      StackMap stack:
         2: lload 2 /* maxLength */
      StackMap locals:
      StackMap stack: long
         3: lstore 4 /* max */
        start local 4 // long max
         4: .line 579
            new org.h2.store.CountingReaderInputStream
            dup
            aload 1 /* reader */
            lload 4 /* max */
            invokespecial org.h2.store.CountingReaderInputStream.<init>:(Ljava/io/Reader;J)V
            astore 6 /* in */
        start local 6 // org.h2.store.CountingReaderInputStream in
         5: .line 580
            aload 0 /* this */
            aload 6 /* in */
            ldc 9223372036854775807
            bipush 16
            aload 6 /* in */
            invokevirtual org.h2.store.LobStorageBackend.addLob:(Ljava/io/InputStream;JILorg/h2/store/CountingReaderInputStream;)Lorg/h2/value/ValueLobDb;
            areturn
        end local 6 // org.h2.store.CountingReaderInputStream in
        end local 4 // long max
        end local 2 // long maxLength
        end local 1 // java.io.Reader reader
        end local 0 // org.h2.store.LobStorageBackend this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/h2/store/LobStorageBackend;
            0    6     1     reader  Ljava/io/Reader;
            0    6     2  maxLength  J
            4    6     4        max  J
            5    6     6         in  Lorg/h2/store/CountingReaderInputStream;
    MethodParameters:
           Name  Flags
      reader     
      maxLength  

  private static void assertNotHolds(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object lock
         0: .line 584
            aload 0 /* lock */
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 585
            aload 0 /* lock */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         2: .line 587
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object lock
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  lock  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      lock  

  static void assertHoldsLock(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object lock
         0: .line 595
            aload 0 /* lock */
            invokestatic java.lang.Thread.holdsLock:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 596
            aload 0 /* lock */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         2: .line 598
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object lock
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  lock  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      lock  
}
SourceFile: "LobStorageBackend.java"
NestMembers:
  org.h2.store.LobStorageBackend$LobInputStream
InnerClasses:
  public LobInputStream = org.h2.store.LobStorageBackend$LobInputStream of org.h2.store.LobStorageBackend