public class org.h2.index.IndexCursor implements org.h2.index.Cursor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.index.IndexCursor
  super_class: java.lang.Object
{
  private final org.h2.table.TableFilter tableFilter;
    descriptor: Lorg/h2/table/TableFilter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.h2.index.Index index;
    descriptor: Lorg/h2/index/Index;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.table.Table table;
    descriptor: Lorg/h2/table/Table;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.table.IndexColumn[] indexColumns;
    descriptor: [Lorg/h2/table/IndexColumn;
    flags: (0x0002) ACC_PRIVATE

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

  private org.h2.result.SearchRow start;
    descriptor: Lorg/h2/result/SearchRow;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.result.SearchRow end;
    descriptor: Lorg/h2/result/SearchRow;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.result.SearchRow intersects;
    descriptor: Lorg/h2/result/SearchRow;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.index.Cursor cursor;
    descriptor: Lorg/h2/index/Cursor;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.table.Column inColumn;
    descriptor: Lorg/h2/table/Column;
    flags: (0x0002) ACC_PRIVATE

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

  private org.h2.value.Value[] inList;
    descriptor: [Lorg/h2/value/Value;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.result.ResultInterface inResult;
    descriptor: Lorg/h2/result/ResultInterface;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.h2.table.TableFilter);
    descriptor: (Lorg/h2/table/TableFilter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.table.TableFilter filter
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            aload 0 /* this */
            aload 1 /* filter */
            putfield org.h2.index.IndexCursor.tableFilter:Lorg/h2/table/TableFilter;
         2: .line 50
            return
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/h2/index/IndexCursor;
            0    3     1  filter  Lorg/h2/table/TableFilter;
    MethodParameters:
        Name  Flags
      filter  

  public void setIndex(org.h2.index.Index);
    descriptor: (Lorg/h2/index/Index;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.index.Index index
         0: .line 53
            aload 0 /* this */
            aload 1 /* index */
            putfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
         1: .line 54
            aload 0 /* this */
            aload 1 /* index */
            invokeinterface org.h2.index.Index.getTable:()Lorg/h2/table/Table;
            putfield org.h2.index.IndexCursor.table:Lorg/h2/table/Table;
         2: .line 55
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getColumns:()[Lorg/h2/table/Column;
            astore 2 /* columns */
        start local 2 // org.h2.table.Column[] columns
         3: .line 56
            aload 0 /* this */
            aload 2 /* columns */
            arraylength
            anewarray org.h2.table.IndexColumn
            putfield org.h2.index.IndexCursor.indexColumns:[Lorg/h2/table/IndexColumn;
         4: .line 57
            aload 1 /* index */
            invokeinterface org.h2.index.Index.getIndexColumns:()[Lorg/h2/table/IndexColumn;
            astore 3 /* idxCols */
        start local 3 // org.h2.table.IndexColumn[] idxCols
         5: .line 58
            aload 3 /* idxCols */
            ifnull 14
         6: .line 59
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: aload 2 /* columns */
            arraylength
            istore 5 /* len */
        start local 5 // int len
         8: goto 13
         9: .line 60
      StackMap locals: org.h2.index.IndexCursor org.h2.index.Index org.h2.table.Column[] org.h2.table.IndexColumn[] int int
      StackMap stack:
            aload 1 /* index */
            aload 2 /* columns */
            iload 4 /* i */
            aaload
            invokeinterface org.h2.index.Index.getColumnIndex:(Lorg/h2/table/Column;)I
            istore 6 /* idx */
        start local 6 // int idx
        10: .line 61
            iload 6 /* idx */
            iflt 12
        11: .line 62
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.indexColumns:[Lorg/h2/table/IndexColumn;
            iload 4 /* i */
            aload 3 /* idxCols */
            iload 6 /* idx */
            aaload
            aastore
        end local 6 // int idx
        12: .line 59
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 4 /* i */
            iload 5 /* len */
            if_icmplt 9
        end local 5 // int len
        end local 4 // int i
        14: .line 66
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.h2.table.IndexColumn[] idxCols
        end local 2 // org.h2.table.Column[] columns
        end local 1 // org.h2.index.Index index
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0     this  Lorg/h2/index/IndexCursor;
            0   15     1    index  Lorg/h2/index/Index;
            3   15     2  columns  [Lorg/h2/table/Column;
            5   15     3  idxCols  [Lorg/h2/table/IndexColumn;
            7   14     4        i  I
            8   14     5      len  I
           10   12     6      idx  I
    MethodParameters:
       Name  Flags
      index  

  public void prepare(org.h2.engine.Session, java.util.ArrayList<org.h2.index.IndexCondition>);
    descriptor: (Lorg/h2/engine/Session;Ljava/util/ArrayList;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=13, args_size=3
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.engine.Session s
        start local 2 // java.util.ArrayList indexConditions
         0: .line 75
            aload 0 /* this */
            iconst_0
            putfield org.h2.index.IndexCursor.alwaysFalse:Z
         1: .line 76
            aload 0 /* this */
            aload 0 /* this */
            aconst_null
            dup_x1
            putfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            putfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
         2: .line 77
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.inList:[Lorg/h2/value/Value;
         3: .line 78
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
         4: .line 79
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.inResult:Lorg/h2/result/ResultInterface;
         5: .line 80
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.intersects:Lorg/h2/result/SearchRow;
         6: .line 81
            aload 2 /* indexConditions */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 4
            goto 49
      StackMap locals: org.h2.index.IndexCursor org.h2.engine.Session java.util.ArrayList top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.h2.index.IndexCondition
            astore 3 /* condition */
        start local 3 // org.h2.index.IndexCondition condition
         8: .line 82
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.isAlwaysFalse:()Z
            ifeq 11
         9: .line 83
            aload 0 /* this */
            iconst_1
            putfield org.h2.index.IndexCursor.alwaysFalse:Z
        10: .line 84
            goto 50
        11: .line 88
      StackMap locals: org.h2.index.IndexCursor org.h2.engine.Session java.util.ArrayList org.h2.index.IndexCondition java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            invokeinterface org.h2.index.Index.isFindUsingFullTableScan:()Z
            ifeq 13
        12: .line 89
            goto 49
        13: .line 91
      StackMap locals:
      StackMap stack:
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.getColumn:()Lorg/h2/table/Column;
            astore 5 /* column */
        start local 5 // org.h2.table.Column column
        14: .line 92
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.getCompareType:()I
            bipush 9
            if_icmpne 21
        15: .line 93
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            ifnonnull 49
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            ifnonnull 49
        16: .line 94
            aload 0 /* this */
            aload 5 /* column */
            invokevirtual org.h2.index.IndexCursor.canUseIndexForIn:(Lorg/h2/table/Column;)Z
            ifeq 49
        17: .line 95
            aload 0 /* this */
            aload 5 /* column */
            putfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
        18: .line 96
            aload 0 /* this */
            aload 3 /* condition */
            aload 1 /* s */
            invokevirtual org.h2.index.IndexCondition.getCurrentValueList:(Lorg/h2/engine/Session;)[Lorg/h2/value/Value;
            putfield org.h2.index.IndexCursor.inList:[Lorg/h2/value/Value;
        19: .line 97
            aload 0 /* this */
            iconst_0
            putfield org.h2.index.IndexCursor.inListIndex:I
        20: .line 100
            goto 49
      StackMap locals: org.h2.table.Column
      StackMap stack:
        21: aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.getCompareType:()I
            bipush 10
            if_icmpne 27
        22: .line 101
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            ifnonnull 49
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            ifnonnull 49
        23: .line 102
            aload 0 /* this */
            aload 5 /* column */
            invokevirtual org.h2.index.IndexCursor.canUseIndexForIn:(Lorg/h2/table/Column;)Z
            ifeq 49
        24: .line 103
            aload 0 /* this */
            aload 5 /* column */
            putfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
        25: .line 104
            aload 0 /* this */
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.getCurrentResult:()Lorg/h2/result/ResultInterface;
            putfield org.h2.index.IndexCursor.inResult:Lorg/h2/result/ResultInterface;
        26: .line 107
            goto 49
        27: .line 108
      StackMap locals:
      StackMap stack:
            aload 3 /* condition */
            aload 1 /* s */
            invokevirtual org.h2.index.IndexCondition.getCurrentValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            astore 6 /* v */
        start local 6 // org.h2.value.Value v
        28: .line 109
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.isStart:()Z
            istore 7 /* isStart */
        start local 7 // boolean isStart
        29: .line 110
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.isEnd:()Z
            istore 8 /* isEnd */
        start local 8 // boolean isEnd
        30: .line 111
            aload 3 /* condition */
            invokevirtual org.h2.index.IndexCondition.isSpatialIntersects:()Z
            istore 9 /* isIntersects */
        start local 9 // boolean isIntersects
        31: .line 112
            aload 5 /* column */
            invokevirtual org.h2.table.Column.getColumnId:()I
            istore 10 /* columnId */
        start local 10 // int columnId
        32: .line 113
            iload 10 /* columnId */
            iconst_m1
            if_icmpeq 38
        33: .line 114
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.indexColumns:[Lorg/h2/table/IndexColumn;
            iload 10 /* columnId */
            aaload
            astore 11 /* idxCol */
        start local 11 // org.h2.table.IndexColumn idxCol
        34: .line 115
            aload 11 /* idxCol */
            ifnull 38
            aload 11 /* idxCol */
            getfield org.h2.table.IndexColumn.sortType:I
            iconst_1
            iand
            ifeq 38
        35: .line 119
            iload 7 /* isStart */
            istore 12 /* temp */
        start local 12 // boolean temp
        36: .line 120
            iload 8 /* isEnd */
            istore 7 /* isStart */
        37: .line 121
            iload 12 /* temp */
            istore 8 /* isEnd */
        end local 12 // boolean temp
        end local 11 // org.h2.table.IndexColumn idxCol
        38: .line 124
      StackMap locals: org.h2.index.IndexCursor org.h2.engine.Session java.util.ArrayList org.h2.index.IndexCondition java.util.Iterator org.h2.table.Column org.h2.value.Value int int int int
      StackMap stack:
            iload 7 /* isStart */
            ifeq 40
        39: .line 125
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            iload 10 /* columnId */
            aload 6 /* v */
            iconst_1
            invokevirtual org.h2.index.IndexCursor.getSearchRow:(Lorg/h2/result/SearchRow;ILorg/h2/value/Value;Z)Lorg/h2/result/SearchRow;
            putfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
        40: .line 127
      StackMap locals:
      StackMap stack:
            iload 8 /* isEnd */
            ifeq 42
        41: .line 128
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            iload 10 /* columnId */
            aload 6 /* v */
            iconst_0
            invokevirtual org.h2.index.IndexCursor.getSearchRow:(Lorg/h2/result/SearchRow;ILorg/h2/value/Value;Z)Lorg/h2/result/SearchRow;
            putfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
        42: .line 130
      StackMap locals:
      StackMap stack:
            iload 9 /* isIntersects */
            ifeq 44
        43: .line 131
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.intersects:Lorg/h2/result/SearchRow;
            iload 10 /* columnId */
            aload 6 /* v */
            invokevirtual org.h2.index.IndexCursor.getSpatialSearchRow:(Lorg/h2/result/SearchRow;ILorg/h2/value/Value;)Lorg/h2/result/SearchRow;
            putfield org.h2.index.IndexCursor.intersects:Lorg/h2/result/SearchRow;
        44: .line 135
      StackMap locals:
      StackMap stack:
            iload 7 /* isStart */
            ifne 45
            iload 8 /* isEnd */
            ifeq 49
      StackMap locals:
      StackMap stack:
        45: aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
            invokevirtual org.h2.index.IndexCursor.canUseIndexFor:(Lorg/h2/table/Column;)Z
            ifne 49
        46: .line 136
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
        47: .line 137
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.inList:[Lorg/h2/value/Value;
        48: .line 138
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.inResult:Lorg/h2/result/ResultInterface;
        end local 10 // int columnId
        end local 9 // boolean isIntersects
        end local 8 // boolean isEnd
        end local 7 // boolean isStart
        end local 6 // org.h2.value.Value v
        end local 5 // org.h2.table.Column column
        end local 3 // org.h2.index.IndexCondition condition
        49: .line 81
      StackMap locals: org.h2.index.IndexCursor org.h2.engine.Session java.util.ArrayList top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        50: .line 142
      StackMap locals: org.h2.index.IndexCursor org.h2.engine.Session java.util.ArrayList
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
            ifnull 52
        51: .line 143
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getTemplateRow:()Lorg/h2/result/Row;
            putfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
        52: .line 145
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.ArrayList indexConditions
        end local 1 // org.h2.engine.Session s
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   53     0             this  Lorg/h2/index/IndexCursor;
            0   53     1                s  Lorg/h2/engine/Session;
            0   53     2  indexConditions  Ljava/util/ArrayList<Lorg/h2/index/IndexCondition;>;
            8   49     3        condition  Lorg/h2/index/IndexCondition;
           14   49     5           column  Lorg/h2/table/Column;
           28   49     6                v  Lorg/h2/value/Value;
           29   49     7          isStart  Z
           30   49     8            isEnd  Z
           31   49     9     isIntersects  Z
           32   49    10         columnId  I
           34   38    11           idxCol  Lorg/h2/table/IndexColumn;
           36   38    12             temp  Z
    Signature: (Lorg/h2/engine/Session;Ljava/util/ArrayList<Lorg/h2/index/IndexCondition;>;)V
    MethodParameters:
                 Name  Flags
      s                
      indexConditions  

  public void find(org.h2.engine.Session, java.util.ArrayList<org.h2.index.IndexCondition>);
    descriptor: (Lorg/h2/engine/Session;Ljava/util/ArrayList;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.engine.Session s
        start local 2 // java.util.ArrayList indexConditions
         0: .line 154
            aload 0 /* this */
            aload 1 /* s */
            aload 2 /* indexConditions */
            invokevirtual org.h2.index.IndexCursor.prepare:(Lorg/h2/engine/Session;Ljava/util/ArrayList;)V
         1: .line 155
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
            ifnull 3
         2: .line 156
            return
         3: .line 158
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.alwaysFalse:Z
            ifne 11
         4: .line 159
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.intersects:Lorg/h2/result/SearchRow;
            ifnull 9
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            instanceof org.h2.index.SpatialIndex
            ifeq 9
         5: .line 160
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            checkcast org.h2.index.SpatialIndex
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.tableFilter:Lorg/h2/table/TableFilter;
         6: .line 161
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.intersects:Lorg/h2/result/SearchRow;
         7: .line 160
            invokeinterface org.h2.index.SpatialIndex.findByGeometry:(Lorg/h2/table/TableFilter;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
            putfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
         8: .line 162
            goto 11
      StackMap locals:
      StackMap stack:
         9: aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            ifnull 11
        10: .line 163
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.tableFilter:Lorg/h2/table/TableFilter;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            invokeinterface org.h2.index.Index.find:(Lorg/h2/table/TableFilter;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
            putfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
        11: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.ArrayList indexConditions
        end local 1 // org.h2.engine.Session s
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lorg/h2/index/IndexCursor;
            0   12     1                s  Lorg/h2/engine/Session;
            0   12     2  indexConditions  Ljava/util/ArrayList<Lorg/h2/index/IndexCondition;>;
    Signature: (Lorg/h2/engine/Session;Ljava/util/ArrayList<Lorg/h2/index/IndexCondition;>;)V
    MethodParameters:
                 Name  Flags
      s                
      indexConditions  

  private boolean canUseIndexForIn(org.h2.table.Column);
    descriptor: (Lorg/h2/table/Column;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.table.Column column
         0: .line 169
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
            ifnull 2
         1: .line 171
            iconst_0
            ireturn
         2: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* column */
            invokevirtual org.h2.index.IndexCursor.canUseIndexFor:(Lorg/h2/table/Column;)Z
            ireturn
        end local 1 // org.h2.table.Column column
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/h2/index/IndexCursor;
            0    3     1  column  Lorg/h2/table/Column;
    MethodParameters:
        Name  Flags
      column  

  private boolean canUseIndexFor(org.h2.table.Column);
    descriptor: (Lorg/h2/table/Column;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.table.Column column
         0: .line 181
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            invokeinterface org.h2.index.Index.getIndexColumns:()[Lorg/h2/table/IndexColumn;
            astore 2 /* cols */
        start local 2 // org.h2.table.IndexColumn[] cols
         1: .line 182
            aload 2 /* cols */
            ifnonnull 3
         2: .line 183
            iconst_1
            ireturn
         3: .line 185
      StackMap locals: org.h2.table.IndexColumn[]
      StackMap stack:
            aload 2 /* cols */
            iconst_0
            aaload
            astore 3 /* idxCol */
        start local 3 // org.h2.table.IndexColumn idxCol
         4: .line 186
            aload 3 /* idxCol */
            ifnull 5
            aload 3 /* idxCol */
            getfield org.h2.table.IndexColumn.column:Lorg/h2/table/Column;
            aload 1 /* column */
            if_acmpeq 5
            iconst_0
            ireturn
      StackMap locals: org.h2.table.IndexColumn
      StackMap stack:
         5: iconst_1
            ireturn
        end local 3 // org.h2.table.IndexColumn idxCol
        end local 2 // org.h2.table.IndexColumn[] cols
        end local 1 // org.h2.table.Column column
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lorg/h2/index/IndexCursor;
            0    6     1  column  Lorg/h2/table/Column;
            1    6     2    cols  [Lorg/h2/table/IndexColumn;
            4    6     3  idxCol  Lorg/h2/table/IndexColumn;
    MethodParameters:
        Name  Flags
      column  

  private org.h2.result.SearchRow getSpatialSearchRow(org.h2.result.SearchRow, int, org.h2.value.Value);
    descriptor: (Lorg/h2/result/SearchRow;ILorg/h2/value/Value;)Lorg/h2/result/SearchRow;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.result.SearchRow row
        start local 2 // int columnId
        start local 3 // org.h2.value.Value v
         0: .line 190
            aload 1 /* row */
            ifnonnull 3
         1: .line 191
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getTemplateRow:()Lorg/h2/result/Row;
            astore 1 /* row */
         2: .line 192
            goto 10
      StackMap locals:
      StackMap stack:
         3: aload 1 /* row */
            iload 2 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            ifnull 10
         4: .line 196
            aload 1 /* row */
            iload 2 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
         5: .line 197
            bipush 22
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
         6: .line 196
            checkcast org.h2.value.ValueGeometry
            astore 4 /* vg */
        start local 4 // org.h2.value.ValueGeometry vg
         7: .line 198
            aload 3 /* v */
            bipush 22
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueGeometry
         8: .line 199
            aload 4 /* vg */
            invokevirtual org.h2.value.ValueGeometry.getEnvelopeUnion:(Lorg/h2/value/ValueGeometry;)Lorg/h2/value/Value;
         9: .line 198
            astore 3 /* v */
        end local 4 // org.h2.value.ValueGeometry vg
        10: .line 201
      StackMap locals:
      StackMap stack:
            iload 2 /* columnId */
            iconst_m1
            if_icmpne 13
        11: .line 202
            aload 1 /* row */
            aload 3 /* v */
            invokevirtual org.h2.value.Value.getLong:()J
            invokeinterface org.h2.result.SearchRow.setKey:(J)V
        12: .line 203
            goto 14
        13: .line 204
      StackMap locals:
      StackMap stack:
            aload 1 /* row */
            iload 2 /* columnId */
            aload 3 /* v */
            invokeinterface org.h2.result.SearchRow.setValue:(ILorg/h2/value/Value;)V
        14: .line 206
      StackMap locals:
      StackMap stack:
            aload 1 /* row */
            areturn
        end local 3 // org.h2.value.Value v
        end local 2 // int columnId
        end local 1 // org.h2.result.SearchRow row
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/h2/index/IndexCursor;
            0   15     1       row  Lorg/h2/result/SearchRow;
            0   15     2  columnId  I
            0   15     3         v  Lorg/h2/value/Value;
            7   10     4        vg  Lorg/h2/value/ValueGeometry;
    MethodParameters:
          Name  Flags
      row       
      columnId  
      v         

  private org.h2.result.SearchRow getSearchRow(org.h2.result.SearchRow, int, org.h2.value.Value, boolean);
    descriptor: (Lorg/h2/result/SearchRow;ILorg/h2/value/Value;Z)Lorg/h2/result/SearchRow;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.result.SearchRow row
        start local 2 // int columnId
        start local 3 // org.h2.value.Value v
        start local 4 // boolean max
         0: .line 210
            aload 1 /* row */
            ifnonnull 3
         1: .line 211
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getTemplateRow:()Lorg/h2/result/Row;
            astore 1 /* row */
         2: .line 212
            goto 4
         3: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* row */
            iload 2 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            aload 3 /* v */
            iload 4 /* max */
            invokevirtual org.h2.index.IndexCursor.getMax:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)Lorg/h2/value/Value;
            astore 3 /* v */
         4: .line 215
      StackMap locals:
      StackMap stack:
            iload 2 /* columnId */
            iconst_m1
            if_icmpne 7
         5: .line 216
            aload 1 /* row */
            aload 3 /* v */
            invokevirtual org.h2.value.Value.getLong:()J
            invokeinterface org.h2.result.SearchRow.setKey:(J)V
         6: .line 217
            goto 8
         7: .line 218
      StackMap locals:
      StackMap stack:
            aload 1 /* row */
            iload 2 /* columnId */
            aload 3 /* v */
            invokeinterface org.h2.result.SearchRow.setValue:(ILorg/h2/value/Value;)V
         8: .line 220
      StackMap locals:
      StackMap stack:
            aload 1 /* row */
            areturn
        end local 4 // boolean max
        end local 3 // org.h2.value.Value v
        end local 2 // int columnId
        end local 1 // org.h2.result.SearchRow row
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lorg/h2/index/IndexCursor;
            0    9     1       row  Lorg/h2/result/SearchRow;
            0    9     2  columnId  I
            0    9     3         v  Lorg/h2/value/Value;
            0    9     4       max  Z
    MethodParameters:
          Name  Flags
      row       
      columnId  
      v         
      max       

  private org.h2.value.Value getMax(org.h2.value.Value, org.h2.value.Value, boolean);
    descriptor: (Lorg/h2/value/Value;Lorg/h2/value/Value;Z)Lorg/h2/value/Value;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.value.Value a
        start local 2 // org.h2.value.Value b
        start local 3 // boolean bigger
         0: .line 224
            aload 1 /* a */
            ifnonnull 2
         1: .line 225
            aload 2 /* b */
            areturn
         2: .line 226
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            ifnonnull 4
         3: .line 227
            aload 1 /* a */
            areturn
         4: .line 230
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 6
         5: .line 231
            aload 2 /* b */
            areturn
         6: .line 232
      StackMap locals:
      StackMap stack:
            aload 2 /* b */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 8
         7: .line 233
            aload 1 /* a */
            areturn
         8: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getDatabase:()Lorg/h2/engine/Database;
            aload 1 /* a */
            aload 2 /* b */
            invokevirtual org.h2.engine.Database.compare:(Lorg/h2/value/Value;Lorg/h2/value/Value;)I
            istore 4 /* comp */
        start local 4 // int comp
         9: .line 236
            iload 4 /* comp */
            ifne 11
        10: .line 237
            aload 1 /* a */
            areturn
        11: .line 239
      StackMap locals: int
      StackMap stack:
            iload 4 /* comp */
            ifle 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: iload 3 /* bigger */
            if_icmpne 14
            aload 1 /* a */
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 2 /* b */
      StackMap locals:
      StackMap stack: org.h2.value.Value
        15: areturn
        end local 4 // int comp
        end local 3 // boolean bigger
        end local 2 // org.h2.value.Value b
        end local 1 // org.h2.value.Value a
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lorg/h2/index/IndexCursor;
            0   16     1       a  Lorg/h2/value/Value;
            0   16     2       b  Lorg/h2/value/Value;
            0   16     3  bigger  Z
            9   16     4    comp  I
    MethodParameters:
        Name  Flags
      a       
      b       
      bigger  

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

  public org.h2.result.SearchRow getStart();
    descriptor: ()Lorg/h2/result/SearchRow;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 257
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            areturn
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/IndexCursor;

  public org.h2.result.SearchRow getEnd();
    descriptor: ()Lorg/h2/result/SearchRow;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 266
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.end:Lorg/h2/result/SearchRow;
            areturn
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/IndexCursor;

  public org.h2.result.Row get();
    descriptor: ()Lorg/h2/result/Row;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 271
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
            ifnonnull 2
         1: .line 272
            aconst_null
            areturn
         2: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
            invokeinterface org.h2.index.Cursor.get:()Lorg/h2/result/Row;
            areturn
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/index/IndexCursor;

  public org.h2.result.SearchRow getSearchRow();
    descriptor: ()Lorg/h2/result/SearchRow;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 279
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
            invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
            areturn
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/IndexCursor;

  public boolean next();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
            ifnonnull 4
         1: .line 286
            aload 0 /* this */
            invokevirtual org.h2.index.IndexCursor.nextCursor:()V
         2: .line 287
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
            ifnonnull 4
         3: .line 288
            iconst_0
            ireturn
         4: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
            invokeinterface org.h2.index.Cursor.next:()Z
            ifeq 6
         5: .line 292
            iconst_1
            ireturn
         6: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
         7: .line 284
            goto 0
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/h2/index/IndexCursor;

  private void nextCursor();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 299
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inList:[Lorg/h2/value/Value;
            ifnull 8
         1: .line 300
            goto 6
         2: .line 301
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inList:[Lorg/h2/value/Value;
            aload 0 /* this */
            dup
            getfield org.h2.index.IndexCursor.inListIndex:I
            dup_x1
            iconst_1
            iadd
            putfield org.h2.index.IndexCursor.inListIndex:I
            aaload
            astore 1 /* v */
        start local 1 // org.h2.value.Value v
         3: .line 302
            aload 1 /* v */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpeq 6
         4: .line 303
            aload 0 /* this */
            aload 1 /* v */
            invokevirtual org.h2.index.IndexCursor.find:(Lorg/h2/value/Value;)V
         5: .line 304
            goto 15
        end local 1 // org.h2.value.Value v
         6: .line 300
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inListIndex:I
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inList:[Lorg/h2/value/Value;
            arraylength
            if_icmplt 2
         7: .line 307
            goto 15
      StackMap locals:
      StackMap stack:
         8: aload 0 /* this */
            getfield org.h2.index.IndexCursor.inResult:Lorg/h2/result/ResultInterface;
            ifnull 15
         9: .line 308
            goto 14
        10: .line 309
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inResult:Lorg/h2/result/ResultInterface;
            invokeinterface org.h2.result.ResultInterface.currentRow:()[Lorg/h2/value/Value;
            iconst_0
            aaload
            astore 1 /* v */
        start local 1 // org.h2.value.Value v
        11: .line 310
            aload 1 /* v */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpeq 14
        12: .line 311
            aload 0 /* this */
            aload 1 /* v */
            invokevirtual org.h2.index.IndexCursor.find:(Lorg/h2/value/Value;)V
        13: .line 312
            goto 15
        end local 1 // org.h2.value.Value v
        14: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inResult:Lorg/h2/result/ResultInterface;
            invokeinterface org.h2.result.ResultInterface.next:()Z
            ifne 10
        15: .line 316
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lorg/h2/index/IndexCursor;
            3    6     1     v  Lorg/h2/value/Value;
           11   14     1     v  Lorg/h2/value/Value;

  private void find(org.h2.value.Value);
    descriptor: (Lorg/h2/value/Value;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.h2.index.IndexCursor this
        start local 1 // org.h2.value.Value v
         0: .line 319
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
            aload 1 /* v */
            invokevirtual org.h2.table.Column.convert:(Lorg/h2/value/Value;)Lorg/h2/value/Value;
            astore 1 /* v */
         1: .line 320
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.inColumn:Lorg/h2/table/Column;
            invokevirtual org.h2.table.Column.getColumnId:()I
            istore 2 /* id */
        start local 2 // int id
         2: .line 321
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            iload 2 /* id */
            aload 1 /* v */
            invokeinterface org.h2.result.SearchRow.setValue:(ILorg/h2/value/Value;)V
         3: .line 322
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.index:Lorg/h2/index/Index;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.tableFilter:Lorg/h2/table/TableFilter;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            aload 0 /* this */
            getfield org.h2.index.IndexCursor.start:Lorg/h2/result/SearchRow;
            invokeinterface org.h2.index.Index.find:(Lorg/h2/table/TableFilter;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
            putfield org.h2.index.IndexCursor.cursor:Lorg/h2/index/Cursor;
         4: .line 323
            return
        end local 2 // int id
        end local 1 // org.h2.value.Value v
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/h2/index/IndexCursor;
            0    5     1     v  Lorg/h2/value/Value;
            2    5     2    id  I
    MethodParameters:
      Name  Flags
      v     

  public boolean previous();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.index.IndexCursor this
         0: .line 327
            aload 0 /* this */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 0 // org.h2.index.IndexCursor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/index/IndexCursor;
}
SourceFile: "IndexCursor.java"