public class org.h2.index.SpatialTreeIndex extends org.h2.index.BaseIndex implements org.h2.index.SpatialIndex
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.index.SpatialTreeIndex
  super_class: org.h2.index.BaseIndex
{
  private static final java.lang.String MAP_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "RTREE_"

  private final org.h2.mvstore.rtree.MVRTreeMap<java.lang.Long> treeMap;
    descriptor: Lorg/h2/mvstore/rtree/MVRTreeMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/h2/mvstore/rtree/MVRTreeMap<Ljava/lang/Long;>;

  private final org.h2.mvstore.MVStore store;
    descriptor: Lorg/h2/mvstore/MVStore;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  public void <init>(org.h2.table.Table, int, java.lang.String, org.h2.table.IndexColumn[], org.h2.index.IndexType, boolean, boolean, org.h2.engine.Session);
    descriptor: (Lorg/h2/table/Table;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;ZZLorg/h2/engine/Session;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=9
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.table.Table table
        start local 2 // int id
        start local 3 // java.lang.String indexName
        start local 4 // org.h2.table.IndexColumn[] columns
        start local 5 // org.h2.index.IndexType indexType
        start local 6 // boolean persistent
        start local 7 // boolean create
        start local 8 // org.h2.engine.Session session
         0: .line 64
            aload 0 /* this */
            aload 1 /* table */
            iload 2 /* id */
            aload 3 /* indexName */
            aload 4 /* columns */
            aload 5 /* indexType */
            invokespecial org.h2.index.BaseIndex.<init>:(Lorg/h2/table/Table;ILjava/lang/String;[Lorg/h2/table/IndexColumn;Lorg/h2/index/IndexType;)V
         1: .line 65
            aload 5 /* indexType */
            invokevirtual org.h2.index.IndexType.isUnique:()Z
            ifeq 3
         2: .line 66
            ldc "not unique"
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
         3: .line 68
      StackMap locals: org.h2.index.SpatialTreeIndex org.h2.table.Table int java.lang.String org.h2.table.IndexColumn[] org.h2.index.IndexType int int org.h2.engine.Session
      StackMap stack:
            iload 6 /* persistent */
            ifne 6
            iload 7 /* create */
            ifne 6
         4: .line 70
            ldc "Non persistent index called with create==false"
         5: .line 69
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
         6: .line 72
      StackMap locals:
      StackMap stack:
            aload 4 /* columns */
            arraylength
            iconst_1
            if_icmple 9
         7: .line 74
            ldc "can only do one column"
         8: .line 73
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
         9: .line 76
      StackMap locals:
      StackMap stack:
            aload 4 /* columns */
            iconst_0
            aaload
            getfield org.h2.table.IndexColumn.sortType:I
            iconst_1
            iand
            ifeq 12
        10: .line 78
            ldc "cannot do descending"
        11: .line 77
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        12: .line 80
      StackMap locals:
      StackMap stack:
            aload 4 /* columns */
            iconst_0
            aaload
            getfield org.h2.table.IndexColumn.sortType:I
            iconst_2
            iand
            ifeq 15
        13: .line 82
            ldc "cannot do nulls first"
        14: .line 81
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        15: .line 84
      StackMap locals:
      StackMap stack:
            aload 4 /* columns */
            iconst_0
            aaload
            getfield org.h2.table.IndexColumn.sortType:I
            iconst_4
            iand
            ifeq 18
        16: .line 86
            ldc "cannot do nulls last"
        17: .line 85
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        18: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* create */
            putfield org.h2.index.SpatialTreeIndex.needRebuild:Z
        19: .line 89
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.database:Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.isStarting:()Z
            ifne 25
        20: .line 90
            aload 4 /* columns */
            iconst_0
            aaload
            getfield org.h2.table.IndexColumn.column:Lorg/h2/table/Column;
            invokevirtual org.h2.table.Column.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            bipush 22
            if_icmpeq 25
        21: .line 92
            new java.lang.StringBuilder
            dup
            ldc "spatial index on non-geometry column, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        22: .line 93
            aload 4 /* columns */
            iconst_0
            aaload
            getfield org.h2.table.IndexColumn.column:Lorg/h2/table/Column;
            invokevirtual org.h2.table.Column.getCreateSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 92
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 91
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        25: .line 96
      StackMap locals:
      StackMap stack:
            iload 6 /* persistent */
            ifne 31
        26: .line 98
            aload 0 /* this */
            aconst_null
            invokestatic org.h2.mvstore.MVStore.open:(Ljava/lang/String;)Lorg/h2/mvstore/MVStore;
            putfield org.h2.index.SpatialTreeIndex.store:Lorg/h2/mvstore/MVStore;
        27: .line 99
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.store:Lorg/h2/mvstore/MVStore;
            ldc "spatialIndex"
        28: .line 100
            new org.h2.mvstore.rtree.MVRTreeMap$Builder
            dup
            invokespecial org.h2.mvstore.rtree.MVRTreeMap$Builder.<init>:()V
        29: .line 99
            invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
            checkcast org.h2.mvstore.rtree.MVRTreeMap
            putfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
        30: .line 101
            goto 41
        31: .line 102
      StackMap locals:
      StackMap stack:
            iload 2 /* id */
            ifge 34
        32: .line 104
            ldc "Persistent index with id<0"
        33: .line 103
            invokestatic org.h2.message.DbException.getUnsupportedException:(Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        34: .line 106
      StackMap locals:
      StackMap stack:
            aload 8 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            invokestatic org.h2.mvstore.db.MVTableEngine.init:(Lorg/h2/engine/Database;)Lorg/h2/mvstore/db/MVTableEngine$Store;
            pop
        35: .line 107
            aload 0 /* this */
            aload 8 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.getStore:()Lorg/h2/mvstore/db/MVTableEngine$Store;
            invokevirtual org.h2.mvstore.db.MVTableEngine$Store.getMvStore:()Lorg/h2/mvstore/MVStore;
            putfield org.h2.index.SpatialTreeIndex.store:Lorg/h2/mvstore/MVStore;
        36: .line 110
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.store:Lorg/h2/mvstore/MVStore;
            new java.lang.StringBuilder
            dup
            ldc "RTREE_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.h2.index.SpatialTreeIndex.getId:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        37: .line 111
            new org.h2.mvstore.rtree.MVRTreeMap$Builder
            dup
            invokespecial org.h2.mvstore.rtree.MVRTreeMap$Builder.<init>:()V
        38: .line 110
            invokevirtual org.h2.mvstore.MVStore.openMap:(Ljava/lang/String;Lorg/h2/mvstore/MVMap$MapBuilder;)Lorg/h2/mvstore/MVMap;
            checkcast org.h2.mvstore.rtree.MVRTreeMap
            putfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
        39: .line 112
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.isEmpty:()Z
            ifeq 41
        40: .line 113
            aload 0 /* this */
            iconst_1
            putfield org.h2.index.SpatialTreeIndex.needRebuild:Z
        41: .line 116
      StackMap locals:
      StackMap stack:
            return
        end local 8 // org.h2.engine.Session session
        end local 7 // boolean create
        end local 6 // boolean persistent
        end local 5 // org.h2.index.IndexType indexType
        end local 4 // org.h2.table.IndexColumn[] columns
        end local 3 // java.lang.String indexName
        end local 2 // int id
        end local 1 // org.h2.table.Table table
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   42     0        this  Lorg/h2/index/SpatialTreeIndex;
            0   42     1       table  Lorg/h2/table/Table;
            0   42     2          id  I
            0   42     3   indexName  Ljava/lang/String;
            0   42     4     columns  [Lorg/h2/table/IndexColumn;
            0   42     5   indexType  Lorg/h2/index/IndexType;
            0   42     6  persistent  Z
            0   42     7      create  Z
            0   42     8     session  Lorg/h2/engine/Session;
    MethodParameters:
            Name  Flags
      table       
      id          
      indexName   
      columns     
      indexType   
      persistent  
      create      
      session     

  public void close(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
         0: .line 120
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.store:Lorg/h2/mvstore/MVStore;
            invokevirtual org.h2.mvstore.MVStore.close:()V
         1: .line 121
            aload 0 /* this */
            iconst_1
            putfield org.h2.index.SpatialTreeIndex.closed:Z
         2: .line 122
            return
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    3     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  public void add(org.h2.engine.Session, org.h2.result.Row);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.result.Row row
         0: .line 126
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.closed:Z
            ifeq 2
         1: .line 127
            invokestatic org.h2.message.DbException.throwInternalError:()Ljava/lang/RuntimeException;
            athrow
         2: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            aload 0 /* this */
            aload 2 /* row */
            invokevirtual org.h2.index.SpatialTreeIndex.getKey:(Lorg/h2/result/SearchRow;)Lorg/h2/mvstore/rtree/SpatialKey;
            aload 2 /* row */
            invokeinterface org.h2.result.Row.getKey:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.add:(Lorg/h2/mvstore/rtree/SpatialKey;Ljava/lang/Object;)V
         3: .line 130
            return
        end local 2 // org.h2.result.Row row
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    4     1  session  Lorg/h2/engine/Session;
            0    4     2      row  Lorg/h2/result/Row;
    MethodParameters:
         Name  Flags
      session  
      row      

  private org.h2.mvstore.rtree.SpatialKey getKey(org.h2.result.SearchRow);
    descriptor: (Lorg/h2/result/SearchRow;)Lorg/h2/mvstore/rtree/SpatialKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=4, args_size=2
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.result.SearchRow row
         0: .line 133
            aload 1 /* row */
            ifnonnull 2
         1: .line 134
            aconst_null
            areturn
         2: .line 136
      StackMap locals:
      StackMap stack:
            aload 1 /* row */
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.columnIds:[I
            iconst_0
            iaload
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            astore 2 /* v */
        start local 2 // org.h2.value.Value v
         3: .line 138
            aload 2 /* v */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpeq 6
         4: .line 139
            aload 2 /* v */
            bipush 22
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueGeometry
            invokevirtual org.h2.value.ValueGeometry.getEnvelopeNoCopy:()[D
            dup
            astore 3 /* env */
        start local 3 // double[] env
         5: ifnonnull 7
        end local 3 // double[] env
         6: .line 140
      StackMap locals: org.h2.value.Value
      StackMap stack:
            new org.h2.mvstore.rtree.SpatialKey
            dup
            aload 1 /* row */
            invokeinterface org.h2.result.SearchRow.getKey:()J
            iconst_0
            newarray 6
            invokespecial org.h2.mvstore.rtree.SpatialKey.<init>:(J[F)V
            areturn
        start local 3 // double[] env
         7: .line 142
      StackMap locals: double[]
      StackMap stack:
            new org.h2.mvstore.rtree.SpatialKey
            dup
            aload 1 /* row */
            invokeinterface org.h2.result.SearchRow.getKey:()J
            iconst_4
            newarray 6
            dup
            iconst_0
         8: .line 143
            aload 3 /* env */
            iconst_0
            daload
            d2f
            fastore
            dup
            iconst_1
            aload 3 /* env */
            iconst_1
            daload
            d2f
            fastore
            dup
            iconst_2
            aload 3 /* env */
            iconst_2
            daload
            d2f
            fastore
            dup
            iconst_3
            aload 3 /* env */
            iconst_3
            daload
            d2f
         9: .line 142
            fastore
            invokespecial org.h2.mvstore.rtree.SpatialKey.<init>:(J[F)V
            areturn
        end local 3 // double[] env
        end local 2 // org.h2.value.Value v
        end local 1 // org.h2.result.SearchRow row
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/h2/index/SpatialTreeIndex;
            0   10     1   row  Lorg/h2/result/SearchRow;
            3   10     2     v  Lorg/h2/value/Value;
            5    6     3   env  [D
            7   10     3   env  [D
    MethodParameters:
      Name  Flags
      row   

  public void remove(org.h2.engine.Session, org.h2.result.Row);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/result/Row;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.result.Row row
         0: .line 148
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.closed:Z
            ifeq 2
         1: .line 149
            invokestatic org.h2.message.DbException.throwInternalError:()Ljava/lang/RuntimeException;
            athrow
         2: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            aload 0 /* this */
            aload 2 /* row */
            invokevirtual org.h2.index.SpatialTreeIndex.getKey:(Lorg/h2/result/SearchRow;)Lorg/h2/mvstore/rtree/SpatialKey;
            aload 2 /* row */
            invokeinterface org.h2.result.Row.getKey:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.remove:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 4
         3: .line 152
            ldc "row not found"
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         4: .line 154
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.h2.result.Row row
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    5     1  session  Lorg/h2/engine/Session;
            0    5     2      row  Lorg/h2/result/Row;
    MethodParameters:
         Name  Flags
      session  
      row      

  public org.h2.index.Cursor find(org.h2.table.TableFilter, org.h2.result.SearchRow, org.h2.result.SearchRow);
    descriptor: (Lorg/h2/table/TableFilter;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.table.TableFilter filter
        start local 2 // org.h2.result.SearchRow first
        start local 3 // org.h2.result.SearchRow last
         0: .line 158
            aload 0 /* this */
            aload 1 /* filter */
            invokevirtual org.h2.table.TableFilter.getSession:()Lorg/h2/engine/Session;
            invokevirtual org.h2.index.SpatialTreeIndex.find:(Lorg/h2/engine/Session;)Lorg/h2/index/Cursor;
            areturn
        end local 3 // org.h2.result.SearchRow last
        end local 2 // org.h2.result.SearchRow first
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/h2/index/SpatialTreeIndex;
            0    1     1  filter  Lorg/h2/table/TableFilter;
            0    1     2   first  Lorg/h2/result/SearchRow;
            0    1     3    last  Lorg/h2/result/SearchRow;
    MethodParameters:
        Name  Flags
      filter  
      first   
      last    

  public org.h2.index.Cursor find(org.h2.engine.Session, org.h2.result.SearchRow, org.h2.result.SearchRow);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.result.SearchRow first
        start local 3 // org.h2.result.SearchRow last
         0: .line 163
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.index.SpatialTreeIndex.find:(Lorg/h2/engine/Session;)Lorg/h2/index/Cursor;
            areturn
        end local 3 // org.h2.result.SearchRow last
        end local 2 // org.h2.result.SearchRow first
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    1     1  session  Lorg/h2/engine/Session;
            0    1     2    first  Lorg/h2/result/SearchRow;
            0    1     3     last  Lorg/h2/result/SearchRow;
    MethodParameters:
         Name  Flags
      session  
      first    
      last     

  private org.h2.index.Cursor find(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)Lorg/h2/index/Cursor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
         0: .line 167
            new org.h2.index.SpatialTreeIndex$SpatialCursor
            dup
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.table:Lorg/h2/table/Table;
            aload 1 /* session */
            invokespecial org.h2.index.SpatialTreeIndex$SpatialCursor.<init>:(Ljava/util/Iterator;Lorg/h2/table/Table;Lorg/h2/engine/Session;)V
            areturn
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    1     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  public org.h2.index.Cursor findByGeometry(org.h2.table.TableFilter, org.h2.result.SearchRow, org.h2.result.SearchRow, org.h2.result.SearchRow);
    descriptor: (Lorg/h2/table/TableFilter;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.table.TableFilter filter
        start local 2 // org.h2.result.SearchRow first
        start local 3 // org.h2.result.SearchRow last
        start local 4 // org.h2.result.SearchRow intersection
         0: .line 173
            aload 4 /* intersection */
            ifnonnull 2
         1: .line 174
            aload 0 /* this */
            aload 1 /* filter */
            invokevirtual org.h2.table.TableFilter.getSession:()Lorg/h2/engine/Session;
            aload 2 /* first */
            aload 3 /* last */
            invokevirtual org.h2.index.SpatialTreeIndex.find:(Lorg/h2/engine/Session;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
            areturn
         2: .line 176
      StackMap locals:
      StackMap stack:
            new org.h2.index.SpatialTreeIndex$SpatialCursor
            dup
         3: .line 177
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            aload 0 /* this */
            aload 4 /* intersection */
            invokevirtual org.h2.index.SpatialTreeIndex.getKey:(Lorg/h2/result/SearchRow;)Lorg/h2/mvstore/rtree/SpatialKey;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.findIntersectingKeys:(Lorg/h2/mvstore/rtree/SpatialKey;)Lorg/h2/mvstore/rtree/MVRTreeMap$RTreeCursor;
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.table:Lorg/h2/table/Table;
         4: .line 178
            aload 1 /* filter */
            invokevirtual org.h2.table.TableFilter.getSession:()Lorg/h2/engine/Session;
         5: .line 176
            invokespecial org.h2.index.SpatialTreeIndex$SpatialCursor.<init>:(Ljava/util/Iterator;Lorg/h2/table/Table;Lorg/h2/engine/Session;)V
            areturn
        end local 4 // org.h2.result.SearchRow intersection
        end local 3 // org.h2.result.SearchRow last
        end local 2 // org.h2.result.SearchRow first
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/h2/index/SpatialTreeIndex;
            0    6     1        filter  Lorg/h2/table/TableFilter;
            0    6     2         first  Lorg/h2/result/SearchRow;
            0    6     3          last  Lorg/h2/result/SearchRow;
            0    6     4  intersection  Lorg/h2/result/SearchRow;
    MethodParameters:
              Name  Flags
      filter        
      first         
      last          
      intersection  

  public static long getCostRangeIndex(int[], org.h2.table.Column[]);
    descriptor: ([I[Lorg/h2/table/Column;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // int[] masks
        start local 1 // org.h2.table.Column[] columns
         0: .line 189
            aload 1 /* columns */
            arraylength
            ifne 2
         1: .line 190
            ldc 9223372036854775807
            lreturn
         2: .line 192
      StackMap locals:
      StackMap stack:
            aload 1 /* columns */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 9
      StackMap locals: int[] org.h2.table.Column[] top int int org.h2.table.Column[]
      StackMap stack:
         3: aload 5
            iload 3
            aaload
            astore 2 /* column */
        start local 2 // org.h2.table.Column column
         4: .line 193
            aload 2 /* column */
            invokevirtual org.h2.table.Column.getColumnId:()I
            istore 6 /* index */
        start local 6 // int index
         5: .line 194
            aload 0 /* masks */
            iload 6 /* index */
            iaload
            istore 7 /* mask */
        start local 7 // int mask
         6: .line 195
            iload 7 /* mask */
            bipush 16
            iand
            bipush 16
            if_icmpeq 8
         7: .line 196
            ldc 9223372036854775807
            lreturn
        end local 7 // int mask
        end local 6 // int index
        end local 2 // org.h2.table.Column column
         8: .line 192
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         9: iload 3
            iload 4
            if_icmplt 3
        10: .line 199
            ldc 2
            lreturn
        end local 1 // org.h2.table.Column[] columns
        end local 0 // int[] masks
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0    masks  [I
            0   11     1  columns  [Lorg/h2/table/Column;
            4    8     2   column  Lorg/h2/table/Column;
            5    8     6    index  I
            6    8     7     mask  I
    MethodParameters:
         Name  Flags
      masks    
      columns  

  public double getCost(org.h2.engine.Session, int[], org.h2.table.TableFilter[], int, org.h2.result.SortOrder, org.h2.command.dml.AllColumnsForPlan);
    descriptor: (Lorg/h2/engine/Session;[I[Lorg/h2/table/TableFilter;ILorg/h2/result/SortOrder;Lorg/h2/command/dml/AllColumnsForPlan;)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=7
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
        start local 2 // int[] masks
        start local 3 // org.h2.table.TableFilter[] filters
        start local 4 // int filter
        start local 5 // org.h2.result.SortOrder sortOrder
        start local 6 // org.h2.command.dml.AllColumnsForPlan allColumnsSet
         0: .line 206
            aload 2 /* masks */
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.columns:[Lorg/h2/table/Column;
            invokestatic org.h2.index.SpatialTreeIndex.getCostRangeIndex:([I[Lorg/h2/table/Column;)J
            l2d
            dreturn
        end local 6 // org.h2.command.dml.AllColumnsForPlan allColumnsSet
        end local 5 // org.h2.result.SortOrder sortOrder
        end local 4 // int filter
        end local 3 // org.h2.table.TableFilter[] filters
        end local 2 // int[] masks
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/h2/index/SpatialTreeIndex;
            0    1     1        session  Lorg/h2/engine/Session;
            0    1     2          masks  [I
            0    1     3        filters  [Lorg/h2/table/TableFilter;
            0    1     4         filter  I
            0    1     5      sortOrder  Lorg/h2/result/SortOrder;
            0    1     6  allColumnsSet  Lorg/h2/command/dml/AllColumnsForPlan;
    MethodParameters:
               Name  Flags
      session        
      masks          
      filters        
      filter         
      sortOrder      
      allColumnsSet  

  public void remove(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
         0: .line 212
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.isClosed:()Z
            ifne 2
         1: .line 213
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.store:Lorg/h2/mvstore/MVStore;
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.MVStore.removeMap:(Lorg/h2/mvstore/MVMap;)V
         2: .line 215
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    3     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  public void truncate(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
         0: .line 219
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.clear:()V
         1: .line 220
            return
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    2     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  public void checkRename();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.h2.index.SpatialTreeIndex this
         0: .line 225
            return
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/SpatialTreeIndex;

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

  public boolean canGetFirstOrLast();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.index.SpatialTreeIndex this
         0: .line 234
            iconst_1
            ireturn
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/SpatialTreeIndex;

  public org.h2.index.Cursor findFirstOrLast(org.h2.engine.Session, boolean);
    descriptor: (Lorg/h2/engine/Session;Z)Lorg/h2/index/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
        start local 2 // boolean first
         0: .line 239
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.closed:Z
            ifeq 2
         1: .line 240
            aload 0 /* this */
            invokevirtual org.h2.index.SpatialTreeIndex.toString:()Ljava/lang/String;
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         2: .line 242
      StackMap locals:
      StackMap stack:
            iload 2 /* first */
            ifne 5
         3: .line 244
            ldc "Spatial Index can only be fetch by ascending order"
         4: .line 243
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         5: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.index.SpatialTreeIndex.find:(Lorg/h2/engine/Session;)Lorg/h2/index/Cursor;
            areturn
        end local 2 // boolean first
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    6     1  session  Lorg/h2/engine/Session;
            0    6     2    first  Z
    MethodParameters:
         Name  Flags
      session  
      first    

  public long getRowCount(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.index.SpatialTreeIndex this
        start local 1 // org.h2.engine.Session session
         0: .line 251
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.sizeAsLong:()J
            lreturn
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/h2/index/SpatialTreeIndex;
            0    1     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  public long getRowCountApproximation();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.index.SpatialTreeIndex this
         0: .line 256
            aload 0 /* this */
            getfield org.h2.index.SpatialTreeIndex.treeMap:Lorg/h2/mvstore/rtree/MVRTreeMap;
            invokevirtual org.h2.mvstore.rtree.MVRTreeMap.sizeAsLong:()J
            lreturn
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/SpatialTreeIndex;

  public long getDiskSpaceUsed();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.index.SpatialTreeIndex this
         0: .line 262
            lconst_0
            lreturn
        end local 0 // org.h2.index.SpatialTreeIndex this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/SpatialTreeIndex;
}
SourceFile: "SpatialTreeIndex.java"
NestMembers:
  org.h2.index.SpatialTreeIndex$SpatialCursor
InnerClasses:
  private final SpatialCursor = org.h2.index.SpatialTreeIndex$SpatialCursor of org.h2.index.SpatialTreeIndex
  public abstract MapBuilder = org.h2.mvstore.MVMap$MapBuilder of org.h2.mvstore.MVMap
  public Store = org.h2.mvstore.db.MVTableEngine$Store of org.h2.mvstore.db.MVTableEngine
  public Builder = org.h2.mvstore.rtree.MVRTreeMap$Builder of org.h2.mvstore.rtree.MVRTreeMap
  public RTreeCursor = org.h2.mvstore.rtree.MVRTreeMap$RTreeCursor of org.h2.mvstore.rtree.MVRTreeMap