final class org.h2.expression.aggregate.Percentile
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.h2.expression.aggregate.Percentile
  super_class: java.lang.Object
{
  static final java.math.BigDecimal HALF;
    descriptor: Ljava/math/BigDecimal;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 49
            ldc 0.5
            invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
            putstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static boolean isNullsLast(org.h2.index.Index);
    descriptor: (Lorg/h2/index/Index;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.h2.index.Index index
         0: .line 52
            aload 0 /* index */
            invokeinterface org.h2.index.Index.getIndexColumns:()[Lorg/h2/table/IndexColumn;
            iconst_0
            aaload
            astore 1 /* ic */
        start local 1 // org.h2.table.IndexColumn ic
         1: .line 53
            aload 1 /* ic */
            getfield org.h2.table.IndexColumn.sortType:I
            istore 2 /* sortType */
        start local 2 // int sortType
         2: .line 54
            iload 2 /* sortType */
            iconst_4
            iand
            ifne 9
         3: .line 55
            iload 2 /* sortType */
            iconst_2
            iand
            ifne 8
         4: .line 56
            iload 2 /* sortType */
            iconst_1
            iand
            ifeq 5
            iconst_1
            goto 6
      StackMap locals: org.h2.table.IndexColumn int
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: getstatic org.h2.engine.SysProperties.SORT_NULLS_HIGH:Z
         7: .line 54
            ixor
            ifne 9
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         9: iconst_1
            ireturn
        end local 2 // int sortType
        end local 1 // org.h2.table.IndexColumn ic
        end local 0 // org.h2.index.Index index
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0     index  Lorg/h2/index/Index;
            1   10     1        ic  Lorg/h2/table/IndexColumn;
            2   10     2  sortType  I
    MethodParameters:
       Name  Flags
      index  

  static org.h2.index.Index getColumnIndex(org.h2.expression.Expression);
    descriptor: (Lorg/h2/expression/Expression;)Lorg/h2/index/Index;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=11, args_size=1
        start local 0 // org.h2.expression.Expression on
         0: .line 67
            aload 0 /* on */
            instanceof org.h2.expression.ExpressionColumn
            ifeq 24
         1: .line 68
            aload 0 /* on */
            checkcast org.h2.expression.ExpressionColumn
            astore 1 /* col */
        start local 1 // org.h2.expression.ExpressionColumn col
         2: .line 69
            aload 1 /* col */
            invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
            astore 2 /* column */
        start local 2 // org.h2.table.Column column
         3: .line 70
            aload 1 /* col */
            invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
            astore 3 /* filter */
        start local 3 // org.h2.table.TableFilter filter
         4: .line 71
            aload 3 /* filter */
            ifnull 24
         5: .line 72
            aload 3 /* filter */
            invokevirtual org.h2.table.TableFilter.getTable:()Lorg/h2/table/Table;
            astore 4 /* table */
        start local 4 // org.h2.table.Table table
         6: .line 73
            aload 4 /* table */
            invokevirtual org.h2.table.Table.getIndexes:()Ljava/util/ArrayList;
            astore 5 /* indexes */
        start local 5 // java.util.ArrayList indexes
         7: .line 74
            aconst_null
            astore 6 /* result */
        start local 6 // org.h2.index.Index result
         8: .line 75
            aload 5 /* indexes */
            ifnull 23
         9: .line 76
            aload 2 /* column */
            invokevirtual org.h2.table.Column.isNullable:()Z
            istore 7 /* nullable */
        start local 7 // boolean nullable
        10: .line 77
            iconst_1
            istore 8 /* i */
        start local 8 // int i
        11: aload 5 /* indexes */
            invokevirtual java.util.ArrayList.size:()I
            istore 9 /* size */
        start local 9 // int size
        12: goto 22
        13: .line 78
      StackMap locals: org.h2.expression.Expression org.h2.expression.ExpressionColumn org.h2.table.Column org.h2.table.TableFilter org.h2.table.Table java.util.ArrayList org.h2.index.Index int int int
      StackMap stack:
            aload 5 /* indexes */
            iload 8 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.index.Index
            astore 10 /* index */
        start local 10 // org.h2.index.Index index
        14: .line 79
            aload 10 /* index */
            invokeinterface org.h2.index.Index.canFindNext:()Z
            ifne 16
        15: .line 80
            goto 21
        16: .line 82
      StackMap locals: org.h2.index.Index
      StackMap stack:
            aload 10 /* index */
            aload 2 /* column */
            invokeinterface org.h2.index.Index.isFirstColumn:(Lorg/h2/table/Column;)Z
            ifne 18
        17: .line 83
            goto 21
        18: .line 86
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            ifnull 20
            aload 6 /* result */
            invokeinterface org.h2.index.Index.getColumns:()[Lorg/h2/table/Column;
            arraylength
            aload 10 /* index */
            invokeinterface org.h2.index.Index.getColumns:()[Lorg/h2/table/Column;
            arraylength
            if_icmpgt 20
        19: .line 87
            iload 7 /* nullable */
            ifeq 21
            aload 6 /* result */
            invokestatic org.h2.expression.aggregate.Percentile.isNullsLast:(Lorg/h2/index/Index;)Z
            ifeq 21
            aload 10 /* index */
            invokestatic org.h2.expression.aggregate.Percentile.isNullsLast:(Lorg/h2/index/Index;)Z
            ifne 21
        20: .line 88
      StackMap locals:
      StackMap stack:
            aload 10 /* index */
            astore 6 /* result */
        end local 10 // org.h2.index.Index index
        21: .line 77
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 8 /* i */
            iload 9 /* size */
            if_icmplt 13
        end local 9 // int size
        end local 8 // int i
        end local 7 // boolean nullable
        23: .line 92
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            areturn
        end local 6 // org.h2.index.Index result
        end local 5 // java.util.ArrayList indexes
        end local 4 // org.h2.table.Table table
        end local 3 // org.h2.table.TableFilter filter
        end local 2 // org.h2.table.Column column
        end local 1 // org.h2.expression.ExpressionColumn col
        24: .line 95
      StackMap locals: org.h2.expression.Expression
      StackMap stack:
            aconst_null
            areturn
        end local 0 // org.h2.expression.Expression on
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0        on  Lorg/h2/expression/Expression;
            2   24     1       col  Lorg/h2/expression/ExpressionColumn;
            3   24     2    column  Lorg/h2/table/Column;
            4   24     3    filter  Lorg/h2/table/TableFilter;
            6   24     4     table  Lorg/h2/table/Table;
            7   24     5   indexes  Ljava/util/ArrayList<Lorg/h2/index/Index;>;
            8   24     6    result  Lorg/h2/index/Index;
           10   23     7  nullable  Z
           11   23     8         i  I
           12   23     9      size  I
           14   21    10     index  Lorg/h2/index/Index;
    MethodParameters:
      Name  Flags
      on    

  static org.h2.value.Value getValue(org.h2.engine.Database, org.h2.value.Value[], int, java.util.ArrayList<org.h2.command.dml.SelectOrderBy>, java.math.BigDecimal, boolean);
    descriptor: (Lorg/h2/engine/Database;[Lorg/h2/value/Value;ILjava/util/ArrayList;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=14, args_size=6
        start local 0 // org.h2.engine.Database database
        start local 1 // org.h2.value.Value[] array
        start local 2 // int dataType
        start local 3 // java.util.ArrayList orderByList
        start local 4 // java.math.BigDecimal percentile
        start local 5 // boolean interpolate
         0: .line 111
            aload 0 /* database */
            invokevirtual org.h2.engine.Database.getCompareMode:()Lorg/h2/value/CompareMode;
            astore 6 /* compareMode */
        start local 6 // org.h2.value.CompareMode compareMode
         1: .line 112
            aload 1 /* array */
            aload 6 /* compareMode */
            invokestatic java.util.Arrays.sort:([Ljava/lang/Object;Ljava/util/Comparator;)V
         2: .line 113
            aload 1 /* array */
            arraylength
            istore 7 /* count */
        start local 7 // int count
         3: .line 114
            aload 3 /* orderByList */
            ifnull 4
            aload 3 /* orderByList */
            iconst_0
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.command.dml.SelectOrderBy
            getfield org.h2.command.dml.SelectOrderBy.sortType:I
            iconst_1
            iand
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: org.h2.value.CompareMode int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 8 /* reverseIndex */
        start local 8 // boolean reverseIndex
         6: .line 115
            iload 7 /* count */
            iconst_1
            isub
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 4 /* percentile */
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 9 /* fpRow */
        start local 9 // java.math.BigDecimal fpRow
         7: .line 116
            aload 9 /* fpRow */
            invokevirtual java.math.BigDecimal.intValue:()I
            istore 10 /* rowIdx1 */
        start local 10 // int rowIdx1
         8: .line 117
            aload 9 /* fpRow */
            iload 10 /* rowIdx1 */
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 11 /* factor */
        start local 11 // java.math.BigDecimal factor
         9: .line 119
            aload 11 /* factor */
            invokevirtual java.math.BigDecimal.signum:()I
            ifne 13
        10: .line 120
            iconst_0
            istore 5 /* interpolate */
        11: .line 121
            iload 10 /* rowIdx1 */
            istore 12 /* rowIdx2 */
        start local 12 // int rowIdx2
        12: .line 122
            goto 19
        end local 12 // int rowIdx2
        13: .line 123
      StackMap locals: org.h2.engine.Database org.h2.value.Value[] int java.util.ArrayList java.math.BigDecimal int org.h2.value.CompareMode int int java.math.BigDecimal int java.math.BigDecimal
      StackMap stack:
            iload 10 /* rowIdx1 */
            iconst_1
            iadd
            istore 12 /* rowIdx2 */
        start local 12 // int rowIdx2
        14: .line 124
            iload 5 /* interpolate */
            ifne 19
        15: .line 125
            aload 11 /* factor */
            getstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ifle 18
        16: .line 126
            iload 12 /* rowIdx2 */
            istore 10 /* rowIdx1 */
        17: .line 127
            goto 19
        18: .line 128
      StackMap locals: int
      StackMap stack:
            iload 10 /* rowIdx1 */
            istore 12 /* rowIdx2 */
        19: .line 132
      StackMap locals:
      StackMap stack:
            iload 8 /* reverseIndex */
            ifeq 22
        20: .line 133
            iload 7 /* count */
            iconst_1
            isub
            iload 10 /* rowIdx1 */
            isub
            istore 10 /* rowIdx1 */
        21: .line 134
            iload 7 /* count */
            iconst_1
            isub
            iload 12 /* rowIdx2 */
            isub
            istore 12 /* rowIdx2 */
        22: .line 136
      StackMap locals:
      StackMap stack:
            aload 1 /* array */
            iload 10 /* rowIdx1 */
            aaload
            astore 13 /* v */
        start local 13 // org.h2.value.Value v
        23: .line 137
            iload 5 /* interpolate */
            ifne 25
        24: .line 138
            aload 13 /* v */
            iload 2 /* dataType */
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            areturn
        25: .line 140
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 13 /* v */
            aload 1 /* array */
            iload 12 /* rowIdx2 */
            aaload
            aload 11 /* factor */
            iload 2 /* dataType */
            aload 0 /* database */
            invokevirtual org.h2.engine.Database.getMode:()Lorg/h2/engine/Mode;
            aload 6 /* compareMode */
            invokestatic org.h2.expression.aggregate.Percentile.interpolate:(Lorg/h2/value/Value;Lorg/h2/value/Value;Ljava/math/BigDecimal;ILorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)Lorg/h2/value/Value;
            areturn
        end local 13 // org.h2.value.Value v
        end local 12 // int rowIdx2
        end local 11 // java.math.BigDecimal factor
        end local 10 // int rowIdx1
        end local 9 // java.math.BigDecimal fpRow
        end local 8 // boolean reverseIndex
        end local 7 // int count
        end local 6 // org.h2.value.CompareMode compareMode
        end local 5 // boolean interpolate
        end local 4 // java.math.BigDecimal percentile
        end local 3 // java.util.ArrayList orderByList
        end local 2 // int dataType
        end local 1 // org.h2.value.Value[] array
        end local 0 // org.h2.engine.Database database
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   26     0      database  Lorg/h2/engine/Database;
            0   26     1         array  [Lorg/h2/value/Value;
            0   26     2      dataType  I
            0   26     3   orderByList  Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
            0   26     4    percentile  Ljava/math/BigDecimal;
            0   26     5   interpolate  Z
            1   26     6   compareMode  Lorg/h2/value/CompareMode;
            3   26     7         count  I
            6   26     8  reverseIndex  Z
            7   26     9         fpRow  Ljava/math/BigDecimal;
            8   26    10       rowIdx1  I
            9   26    11        factor  Ljava/math/BigDecimal;
           12   13    12       rowIdx2  I
           14   26    12       rowIdx2  I
           23   26    13             v  Lorg/h2/value/Value;
    Signature: (Lorg/h2/engine/Database;[Lorg/h2/value/Value;ILjava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
    MethodParameters:
             Name  Flags
      database     
      array        
      dataType     
      orderByList  
      percentile   
      interpolate  

  static org.h2.value.Value getFromIndex(org.h2.engine.Session, org.h2.expression.Expression, int, java.util.ArrayList<org.h2.command.dml.SelectOrderBy>, java.math.BigDecimal, boolean);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/expression/Expression;ILjava/util/ArrayList;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=26, args_size=6
        start local 0 // org.h2.engine.Session session
        start local 1 // org.h2.expression.Expression expression
        start local 2 // int dataType
        start local 3 // java.util.ArrayList orderByList
        start local 4 // java.math.BigDecimal percentile
        start local 5 // boolean interpolate
         0: .line 156
            aload 1 /* expression */
            invokestatic org.h2.expression.aggregate.Percentile.getColumnIndex:(Lorg/h2/expression/Expression;)Lorg/h2/index/Index;
            astore 6 /* index */
        start local 6 // org.h2.index.Index index
         1: .line 157
            aload 6 /* index */
            aload 0 /* session */
            invokeinterface org.h2.index.Index.getRowCount:(Lorg/h2/engine/Session;)J
            lstore 7 /* count */
        start local 7 // long count
         2: .line 158
            lload 7 /* count */
            lconst_0
            lcmp
            ifne 4
         3: .line 159
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
         4: .line 161
      StackMap locals: org.h2.index.Index long
      StackMap stack:
            aload 6 /* index */
            aload 0 /* session */
            aconst_null
            aconst_null
            invokeinterface org.h2.index.Index.find:(Lorg/h2/engine/Session;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
            astore 9 /* cursor */
        start local 9 // org.h2.index.Cursor cursor
         5: .line 162
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.next:()Z
            pop
         6: .line 163
            aload 6 /* index */
            invokeinterface org.h2.index.Index.getColumns:()[Lorg/h2/table/Column;
            iconst_0
            aaload
            invokevirtual org.h2.table.Column.getColumnId:()I
            istore 10 /* columnId */
        start local 10 // int columnId
         7: .line 164
            aload 1 /* expression */
            checkcast org.h2.expression.ExpressionColumn
            astore 11 /* expr */
        start local 11 // org.h2.expression.ExpressionColumn expr
         8: .line 165
            aload 11 /* expr */
            invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
            invokevirtual org.h2.table.Column.isNullable:()Z
            ifeq 31
         9: .line 166
            iconst_0
            istore 12 /* hasNulls */
        start local 12 // boolean hasNulls
        10: .line 170
            goto 18
        11: .line 171
      StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int
      StackMap stack:
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
            astore 13 /* row */
        start local 13 // org.h2.result.SearchRow row
        12: .line 172
            aload 13 /* row */
            ifnonnull 14
        13: .line 173
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
        14: .line 175
      StackMap locals: org.h2.result.SearchRow
      StackMap stack:
            aload 13 /* row */
            iload 10 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 19
        15: .line 176
            lload 7 /* count */
            lconst_1
            lsub
            lstore 7 /* count */
        16: .line 177
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.next:()Z
            pop
        17: .line 178
            iconst_1
            istore 12 /* hasNulls */
        end local 13 // org.h2.result.SearchRow row
        18: .line 170
      StackMap locals:
      StackMap stack:
            lload 7 /* count */
            lconst_0
            lcmp
            ifgt 11
        19: .line 183
      StackMap locals:
      StackMap stack:
            lload 7 /* count */
            lconst_0
            lcmp
            ifne 21
        20: .line 184
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
        21: .line 188
      StackMap locals:
      StackMap stack:
            iload 12 /* hasNulls */
            ifne 31
            aload 6 /* index */
            invokestatic org.h2.expression.aggregate.Percentile.isNullsLast:(Lorg/h2/index/Index;)Z
            ifeq 31
        22: .line 189
            aload 11 /* expr */
            invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
            astore 14 /* tableFilter */
        start local 14 // org.h2.table.TableFilter tableFilter
        23: .line 190
            aload 14 /* tableFilter */
            invokevirtual org.h2.table.TableFilter.getTable:()Lorg/h2/table/Table;
            iconst_1
            invokevirtual org.h2.table.Table.getTemplateSimpleRow:(Z)Lorg/h2/result/SearchRow;
            astore 15 /* check */
        start local 15 // org.h2.result.SearchRow check
        24: .line 191
            aload 15 /* check */
            iload 10 /* columnId */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            invokeinterface org.h2.result.SearchRow.setValue:(ILorg/h2/value/Value;)V
        25: .line 192
            aload 6 /* index */
            aload 0 /* session */
            aload 15 /* check */
            aload 15 /* check */
            invokeinterface org.h2.index.Index.find:(Lorg/h2/engine/Session;Lorg/h2/result/SearchRow;Lorg/h2/result/SearchRow;)Lorg/h2/index/Cursor;
            astore 16 /* nullsCursor */
        start local 16 // org.h2.index.Cursor nullsCursor
        26: .line 193
            goto 28
        27: .line 194
      StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int top org.h2.table.TableFilter org.h2.result.SearchRow org.h2.index.Cursor
      StackMap stack:
            lload 7 /* count */
            lconst_1
            lsub
            lstore 7 /* count */
        28: .line 193
      StackMap locals:
      StackMap stack:
            aload 16 /* nullsCursor */
            invokeinterface org.h2.index.Cursor.next:()Z
            ifne 27
        29: .line 196
            lload 7 /* count */
            lconst_0
            lcmp
            ifgt 31
        30: .line 197
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
        end local 16 // org.h2.index.Cursor nullsCursor
        end local 15 // org.h2.result.SearchRow check
        end local 14 // org.h2.table.TableFilter tableFilter
        end local 12 // boolean hasNulls
        31: .line 201
      StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn
      StackMap stack:
            aload 3 /* orderByList */
            ifnull 32
            aload 3 /* orderByList */
            iconst_0
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.command.dml.SelectOrderBy
            getfield org.h2.command.dml.SelectOrderBy.sortType:I
            iconst_1
            iand
            goto 33
      StackMap locals:
      StackMap stack:
        32: iconst_0
        33: .line 202
      StackMap locals:
      StackMap stack: int
            aload 6 /* index */
            invokeinterface org.h2.index.Index.getIndexColumns:()[Lorg/h2/table/IndexColumn;
            iconst_0
            aaload
            getfield org.h2.table.IndexColumn.sortType:I
            iconst_1
            iand
        34: .line 201
            if_icmpeq 35
            iconst_1
            goto 36
      StackMap locals:
      StackMap stack:
        35: iconst_0
      StackMap locals:
      StackMap stack: int
        36: istore 12 /* reverseIndex */
        start local 12 // boolean reverseIndex
        37: .line 203
            lload 7 /* count */
            lconst_1
            lsub
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 4 /* percentile */
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 13 /* fpRow */
        start local 13 // java.math.BigDecimal fpRow
        38: .line 204
            aload 13 /* fpRow */
            invokevirtual java.math.BigDecimal.longValue:()J
            lstore 14 /* rowIdx1 */
        start local 14 // long rowIdx1
        39: .line 205
            aload 13 /* fpRow */
            lload 14 /* rowIdx1 */
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 16 /* factor */
        start local 16 // java.math.BigDecimal factor
        40: .line 207
            aload 16 /* factor */
            invokevirtual java.math.BigDecimal.signum:()I
            ifne 44
        41: .line 208
            iconst_0
            istore 5 /* interpolate */
        42: .line 209
            lload 14 /* rowIdx1 */
            lstore 17 /* rowIdx2 */
        start local 17 // long rowIdx2
        43: .line 210
            goto 50
        end local 17 // long rowIdx2
        44: .line 211
      StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int java.math.BigDecimal long java.math.BigDecimal
      StackMap stack:
            lload 14 /* rowIdx1 */
            lconst_1
            ladd
            lstore 17 /* rowIdx2 */
        start local 17 // long rowIdx2
        45: .line 212
            iload 5 /* interpolate */
            ifne 50
        46: .line 213
            aload 16 /* factor */
            getstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ifle 49
        47: .line 214
            lload 17 /* rowIdx2 */
            lstore 14 /* rowIdx1 */
        48: .line 215
            goto 50
        49: .line 216
      StackMap locals: long
      StackMap stack:
            lload 14 /* rowIdx1 */
            lstore 17 /* rowIdx2 */
        50: .line 220
      StackMap locals:
      StackMap stack:
            iload 12 /* reverseIndex */
            ifeq 51
            lload 7 /* count */
            lconst_1
            lsub
            lload 17 /* rowIdx2 */
            lsub
            goto 52
      StackMap locals:
      StackMap stack:
        51: lload 14 /* rowIdx1 */
      StackMap locals:
      StackMap stack: long
        52: lstore 19 /* skip */
        start local 19 // long skip
        53: .line 221
            iconst_0
            istore 21 /* i */
        start local 21 // int i
        54: goto 57
        55: .line 222
      StackMap locals: long int
      StackMap stack:
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.next:()Z
            pop
        56: .line 221
            iinc 21 /* i */ 1
      StackMap locals:
      StackMap stack:
        57: iload 21 /* i */
            i2l
            lload 19 /* skip */
            lcmp
            iflt 55
        end local 21 // int i
        58: .line 224
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
            astore 21 /* row */
        start local 21 // org.h2.result.SearchRow row
        59: .line 225
            aload 21 /* row */
            ifnonnull 61
        60: .line 226
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
        61: .line 228
      StackMap locals: org.h2.engine.Session org.h2.expression.Expression int java.util.ArrayList java.math.BigDecimal int org.h2.index.Index long org.h2.index.Cursor int org.h2.expression.ExpressionColumn int java.math.BigDecimal long java.math.BigDecimal long long org.h2.result.SearchRow
      StackMap stack:
            aload 21 /* row */
            iload 10 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            astore 22 /* v */
        start local 22 // org.h2.value.Value v
        62: .line 229
            aload 22 /* v */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 64
        63: .line 230
            aload 22 /* v */
            areturn
        64: .line 232
      StackMap locals: org.h2.value.Value
      StackMap stack:
            iload 5 /* interpolate */
            ifeq 78
        65: .line 233
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.next:()Z
            pop
        66: .line 234
            aload 9 /* cursor */
            invokeinterface org.h2.index.Cursor.getSearchRow:()Lorg/h2/result/SearchRow;
            astore 21 /* row */
        67: .line 235
            aload 21 /* row */
            ifnonnull 69
        68: .line 236
            aload 22 /* v */
            areturn
        69: .line 238
      StackMap locals:
      StackMap stack:
            aload 21 /* row */
            iload 10 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            astore 23 /* v2 */
        start local 23 // org.h2.value.Value v2
        70: .line 239
            aload 23 /* v2 */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 72
        71: .line 240
            aload 22 /* v */
            areturn
        72: .line 242
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 0 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            astore 24 /* database */
        start local 24 // org.h2.engine.Database database
        73: .line 243
            iload 12 /* reverseIndex */
            ifeq 77
        74: .line 244
            aload 22 /* v */
            astore 25 /* t */
        start local 25 // org.h2.value.Value t
        75: .line 245
            aload 23 /* v2 */
            astore 22 /* v */
        76: .line 246
            aload 25 /* t */
            astore 23 /* v2 */
        end local 25 // org.h2.value.Value t
        77: .line 248
      StackMap locals: org.h2.engine.Database
      StackMap stack:
            aload 22 /* v */
            aload 23 /* v2 */
            aload 16 /* factor */
            iload 2 /* dataType */
            aload 24 /* database */
            invokevirtual org.h2.engine.Database.getMode:()Lorg/h2/engine/Mode;
            aload 24 /* database */
            invokevirtual org.h2.engine.Database.getCompareMode:()Lorg/h2/value/CompareMode;
            invokestatic org.h2.expression.aggregate.Percentile.interpolate:(Lorg/h2/value/Value;Lorg/h2/value/Value;Ljava/math/BigDecimal;ILorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)Lorg/h2/value/Value;
            areturn
        end local 24 // org.h2.engine.Database database
        end local 23 // org.h2.value.Value v2
        78: .line 250
      StackMap locals:
      StackMap stack:
            aload 22 /* v */
            iload 2 /* dataType */
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            areturn
        end local 22 // org.h2.value.Value v
        end local 21 // org.h2.result.SearchRow row
        end local 19 // long skip
        end local 17 // long rowIdx2
        end local 16 // java.math.BigDecimal factor
        end local 14 // long rowIdx1
        end local 13 // java.math.BigDecimal fpRow
        end local 12 // boolean reverseIndex
        end local 11 // org.h2.expression.ExpressionColumn expr
        end local 10 // int columnId
        end local 9 // org.h2.index.Cursor cursor
        end local 7 // long count
        end local 6 // org.h2.index.Index index
        end local 5 // boolean interpolate
        end local 4 // java.math.BigDecimal percentile
        end local 3 // java.util.ArrayList orderByList
        end local 2 // int dataType
        end local 1 // org.h2.expression.Expression expression
        end local 0 // org.h2.engine.Session session
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   79     0       session  Lorg/h2/engine/Session;
            0   79     1    expression  Lorg/h2/expression/Expression;
            0   79     2      dataType  I
            0   79     3   orderByList  Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
            0   79     4    percentile  Ljava/math/BigDecimal;
            0   79     5   interpolate  Z
            1   79     6         index  Lorg/h2/index/Index;
            2   79     7         count  J
            5   79     9        cursor  Lorg/h2/index/Cursor;
            7   79    10      columnId  I
            8   79    11          expr  Lorg/h2/expression/ExpressionColumn;
           10   31    12      hasNulls  Z
           12   18    13           row  Lorg/h2/result/SearchRow;
           23   31    14   tableFilter  Lorg/h2/table/TableFilter;
           24   31    15         check  Lorg/h2/result/SearchRow;
           26   31    16   nullsCursor  Lorg/h2/index/Cursor;
           37   79    12  reverseIndex  Z
           38   79    13         fpRow  Ljava/math/BigDecimal;
           39   79    14       rowIdx1  J
           40   79    16        factor  Ljava/math/BigDecimal;
           43   44    17       rowIdx2  J
           45   79    17       rowIdx2  J
           53   79    19          skip  J
           54   58    21             i  I
           59   79    21           row  Lorg/h2/result/SearchRow;
           62   79    22             v  Lorg/h2/value/Value;
           70   78    23            v2  Lorg/h2/value/Value;
           73   78    24      database  Lorg/h2/engine/Database;
           75   77    25             t  Lorg/h2/value/Value;
    Signature: (Lorg/h2/engine/Session;Lorg/h2/expression/Expression;ILjava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;Ljava/math/BigDecimal;Z)Lorg/h2/value/Value;
    MethodParameters:
             Name  Flags
      session      
      expression   
      dataType     
      orderByList  
      percentile   
      interpolate  

  private static org.h2.value.Value interpolate(org.h2.value.Value, org.h2.value.Value, java.math.BigDecimal, int, org.h2.engine.Mode, org.h2.value.CompareMode);
    descriptor: (Lorg/h2/value/Value;Lorg/h2/value/Value;Ljava/math/BigDecimal;ILorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)Lorg/h2/value/Value;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=19, args_size=6
        start local 0 // org.h2.value.Value v0
        start local 1 // org.h2.value.Value v1
        start local 2 // java.math.BigDecimal factor
        start local 3 // int dataType
        start local 4 // org.h2.engine.Mode databaseMode
        start local 5 // org.h2.value.CompareMode compareMode
         0: .line 255
            aload 0 /* v0 */
            aload 1 /* v1 */
            aload 4 /* databaseMode */
            aload 5 /* compareMode */
            invokevirtual org.h2.value.Value.compareTo:(Lorg/h2/value/Value;Lorg/h2/engine/Mode;Lorg/h2/value/CompareMode;)I
            ifne 2
         1: .line 256
            aload 0 /* v0 */
            iload 3 /* dataType */
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            areturn
         2: .line 258
      StackMap locals:
      StackMap stack:
            iload 3 /* dataType */
            tableswitch { // 2 - 38
                    2: 3
                    3: 3
                    4: 3
                    5: 5
                    6: 7
                    7: 8
                    8: 8
                    9: 11
                   10: 16
                   11: 22
                   12: 66
                   13: 66
                   14: 66
                   15: 66
                   16: 66
                   17: 66
                   18: 66
                   19: 66
                   20: 66
                   21: 66
                   22: 66
                   23: 66
                   24: 36
                   25: 66
                   26: 60
                   27: 60
                   28: 60
                   29: 60
                   30: 60
                   31: 60
                   32: 60
                   33: 60
                   34: 60
                   35: 60
                   36: 60
                   37: 60
                   38: 60
              default: 66
          }
         3: .line 263
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            invokevirtual org.h2.value.Value.getInt:()I
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 1 /* v1 */
            invokevirtual org.h2.value.Value.getInt:()I
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
         4: .line 262
            invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
            areturn
         5: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            invokevirtual org.h2.value.Value.getLong:()J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 1 /* v1 */
            invokevirtual org.h2.value.Value.getLong:()J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
         6: .line 265
            invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
            areturn
         7: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            invokevirtual org.h2.value.Value.getBigDecimal:()Ljava/math/BigDecimal;
            aload 1 /* v1 */
            invokevirtual org.h2.value.Value.getBigDecimal:()Ljava/math/BigDecimal;
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
            areturn
         8: .line 273
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            invokevirtual org.h2.value.Value.getDouble:()D
            invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
            aload 1 /* v1 */
            invokevirtual org.h2.value.Value.getDouble:()D
            invokestatic java.math.BigDecimal.valueOf:(D)Ljava/math/BigDecimal;
            aload 2 /* factor */
         9: .line 272
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
        10: .line 271
            invokestatic org.h2.value.ValueDecimal.get:(Ljava/math/BigDecimal;)Lorg/h2/value/ValueDecimal;
            areturn
        11: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            bipush 9
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueTime
            astore 6 /* t0 */
        start local 6 // org.h2.value.ValueTime t0
        12: aload 1 /* v1 */
            bipush 9
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueTime
            astore 7 /* t1 */
        start local 7 // org.h2.value.ValueTime t1
        13: .line 276
            aload 6 /* t0 */
            invokevirtual org.h2.value.ValueTime.getNanos:()J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            astore 8 /* n0 */
        start local 8 // java.math.BigDecimal n0
        14: .line 277
            aload 7 /* t1 */
            invokevirtual org.h2.value.ValueTime.getNanos:()J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            astore 9 /* n1 */
        start local 9 // java.math.BigDecimal n1
        15: .line 278
            aload 8 /* n0 */
            aload 9 /* n1 */
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.longValue:()J
            invokestatic org.h2.value.ValueTime.fromNanos:(J)Lorg/h2/value/ValueTime;
            areturn
        end local 9 // java.math.BigDecimal n1
        end local 8 // java.math.BigDecimal n0
        end local 7 // org.h2.value.ValueTime t1
        end local 6 // org.h2.value.ValueTime t0
        16: .line 281
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            bipush 10
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueDate
            astore 6 /* d0 */
        start local 6 // org.h2.value.ValueDate d0
        17: aload 1 /* v1 */
            bipush 10
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueDate
            astore 7 /* d1 */
        start local 7 // org.h2.value.ValueDate d1
        18: .line 282
            aload 6 /* d0 */
            invokevirtual org.h2.value.ValueDate.getDateValue:()J
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            astore 8 /* a0 */
        start local 8 // java.math.BigDecimal a0
        19: .line 283
            aload 7 /* d1 */
            invokevirtual org.h2.value.ValueDate.getDateValue:()J
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            astore 9 /* a1 */
        start local 9 // java.math.BigDecimal a1
        20: .line 285
            aload 8 /* a0 */
            aload 9 /* a1 */
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.longValue:()J
            invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
        21: .line 284
            invokestatic org.h2.value.ValueDate.fromDateValue:(J)Lorg/h2/value/ValueDate;
            areturn
        end local 9 // java.math.BigDecimal a1
        end local 8 // java.math.BigDecimal a0
        end local 7 // org.h2.value.ValueDate d1
        end local 6 // org.h2.value.ValueDate d0
        22: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* v0 */
            bipush 11
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueTimestamp
            astore 6 /* ts0 */
        start local 6 // org.h2.value.ValueTimestamp ts0
        23: .line 289
            aload 1 /* v1 */
            bipush 11
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueTimestamp
            astore 7 /* ts1 */
        start local 7 // org.h2.value.ValueTimestamp ts1
        24: .line 290
            aload 6 /* ts0 */
            invokevirtual org.h2.value.ValueTimestamp.getDateValue:()J
            aload 6 /* ts0 */
            invokevirtual org.h2.value.ValueTimestamp.getTimeNanos:()J
            invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
            astore 8 /* a0 */
        start local 8 // java.math.BigDecimal a0
        25: .line 291
            aload 7 /* ts1 */
            invokevirtual org.h2.value.ValueTimestamp.getDateValue:()J
            aload 7 /* ts1 */
            invokevirtual org.h2.value.ValueTimestamp.getTimeNanos:()J
            invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
            astore 9 /* a1 */
        start local 9 // java.math.BigDecimal a1
        26: .line 292
            aload 8 /* a0 */
            aload 9 /* a1 */
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
        27: .line 293
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
        28: .line 292
            astore 10 /* dr */
        start local 10 // java.math.BigInteger[] dr
        29: .line 294
            aload 10 /* dr */
            iconst_0
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 11 /* absoluteDay */
        start local 11 // long absoluteDay
        30: .line 295
            aload 10 /* dr */
            iconst_1
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 13 /* timeNanos */
        start local 13 // long timeNanos
        31: .line 296
            lload 13 /* timeNanos */
            lconst_0
            lcmp
            ifge 34
        32: .line 297
            lload 13 /* timeNanos */
            ldc 86400000000000
            ladd
            lstore 13 /* timeNanos */
        33: .line 298
            lload 11 /* absoluteDay */
            lconst_1
            lsub
            lstore 11 /* absoluteDay */
        34: .line 301
      StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode org.h2.value.ValueTimestamp org.h2.value.ValueTimestamp java.math.BigDecimal java.math.BigDecimal java.math.BigInteger[] long long
      StackMap stack:
            lload 11 /* absoluteDay */
            invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
            lload 13 /* timeNanos */
        35: .line 300
            invokestatic org.h2.value.ValueTimestamp.fromDateValueAndNanos:(JJ)Lorg/h2/value/ValueTimestamp;
            areturn
        end local 13 // long timeNanos
        end local 11 // long absoluteDay
        end local 10 // java.math.BigInteger[] dr
        end local 9 // java.math.BigDecimal a1
        end local 8 // java.math.BigDecimal a0
        end local 7 // org.h2.value.ValueTimestamp ts1
        end local 6 // org.h2.value.ValueTimestamp ts0
        36: .line 304
      StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode
      StackMap stack:
            aload 0 /* v0 */
            bipush 24
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueTimestampTimeZone
            astore 6 /* ts0 */
        start local 6 // org.h2.value.ValueTimestampTimeZone ts0
        37: .line 305
            aload 1 /* v1 */
            bipush 24
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueTimestampTimeZone
            astore 7 /* ts1 */
        start local 7 // org.h2.value.ValueTimestampTimeZone ts1
        38: .line 306
            aload 6 /* ts0 */
            invokevirtual org.h2.value.ValueTimestampTimeZone.getDateValue:()J
            aload 6 /* ts0 */
            invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeNanos:()J
            invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
            astore 8 /* a0 */
        start local 8 // java.math.BigDecimal a0
        39: .line 307
            aload 7 /* ts1 */
            invokevirtual org.h2.value.ValueTimestampTimeZone.getDateValue:()J
            aload 7 /* ts1 */
            invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeNanos:()J
            invokestatic org.h2.expression.aggregate.Percentile.timestampToDecimal:(JJ)Ljava/math/BigDecimal;
            astore 9 /* a1 */
        start local 9 // java.math.BigDecimal a1
        40: .line 308
            aload 6 /* ts0 */
            invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeZoneOffsetMins:()S
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
        41: .line 309
            getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
            aload 2 /* factor */
            invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
        42: .line 310
            aload 7 /* ts1 */
            invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeZoneOffsetMins:()S
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            aload 2 /* factor */
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
        43: .line 308
            astore 10 /* offset */
        start local 10 // java.math.BigDecimal offset
        44: .line 311
            aload 10 /* offset */
            invokevirtual java.math.BigDecimal.shortValue:()S
            istore 11 /* shortOffset */
        start local 11 // short shortOffset
        45: .line 312
            iload 11 /* shortOffset */
            i2l
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            astore 12 /* shortOffsetBD */
        start local 12 // java.math.BigDecimal shortOffsetBD
        46: .line 313
            aload 8 /* a0 */
            aload 9 /* a1 */
            aload 2 /* factor */
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 13 /* bd */
        start local 13 // java.math.BigDecimal bd
        47: .line 314
            aload 10 /* offset */
            aload 12 /* shortOffsetBD */
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ifeq 51
        48: .line 315
            aload 13 /* bd */
        49: .line 316
            aload 10 /* offset */
            aload 12 /* shortOffsetBD */
            invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            ldc 60000000000
            invokestatic java.math.BigDecimal.valueOf:(J)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
        50: .line 315
            invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            astore 13 /* bd */
        51: .line 318
      StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode org.h2.value.ValueTimestampTimeZone org.h2.value.ValueTimestampTimeZone java.math.BigDecimal java.math.BigDecimal java.math.BigDecimal int java.math.BigDecimal java.math.BigDecimal
      StackMap stack:
            aload 13 /* bd */
            invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            astore 14 /* dr */
        start local 14 // java.math.BigInteger[] dr
        52: .line 319
            aload 14 /* dr */
            iconst_0
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 15 /* absoluteDay */
        start local 15 // long absoluteDay
        53: .line 320
            aload 14 /* dr */
            iconst_1
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 17 /* timeNanos */
        start local 17 // long timeNanos
        54: .line 321
            lload 17 /* timeNanos */
            lconst_0
            lcmp
            ifge 57
        55: .line 322
            lload 17 /* timeNanos */
            ldc 86400000000000
            ladd
            lstore 17 /* timeNanos */
        56: .line 323
            lload 15 /* absoluteDay */
            lconst_1
            lsub
            lstore 15 /* absoluteDay */
        57: .line 325
      StackMap locals: java.math.BigInteger[] long long
      StackMap stack:
            lload 15 /* absoluteDay */
            invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
        58: .line 326
            lload 17 /* timeNanos */
            iload 11 /* shortOffset */
        59: .line 325
            invokestatic org.h2.value.ValueTimestampTimeZone.fromDateValueAndNanos:(JJS)Lorg/h2/value/ValueTimestampTimeZone;
            areturn
        end local 17 // long timeNanos
        end local 15 // long absoluteDay
        end local 14 // java.math.BigInteger[] dr
        end local 13 // java.math.BigDecimal bd
        end local 12 // java.math.BigDecimal shortOffsetBD
        end local 11 // short shortOffset
        end local 10 // java.math.BigDecimal offset
        end local 9 // java.math.BigDecimal a1
        end local 8 // java.math.BigDecimal a0
        end local 7 // org.h2.value.ValueTimestampTimeZone ts1
        end local 6 // org.h2.value.ValueTimestampTimeZone ts0
        60: .line 341
      StackMap locals: org.h2.value.Value org.h2.value.Value java.math.BigDecimal int org.h2.engine.Mode org.h2.value.CompareMode
      StackMap stack:
            iload 3 /* dataType */
            bipush 26
            isub
            invokestatic org.h2.api.IntervalQualifier.valueOf:(I)Lorg/h2/api/IntervalQualifier;
        61: .line 342
            new java.math.BigDecimal
            dup
            aload 0 /* v0 */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
        62: .line 343
            new java.math.BigDecimal
            dup
            aload 1 /* v1 */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
            aload 2 /* factor */
        63: .line 342
            invokestatic org.h2.expression.aggregate.Percentile.interpolateDecimal:(Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
        64: .line 344
            invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
        65: .line 341
            invokestatic org.h2.util.IntervalUtils.intervalFromAbsolute:(Lorg/h2/api/IntervalQualifier;Ljava/math/BigInteger;)Lorg/h2/value/ValueInterval;
            areturn
        66: .line 347
      StackMap locals:
      StackMap stack:
            aload 2 /* factor */
            getstatic org.h2.expression.aggregate.Percentile.HALF:Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.compareTo:(Ljava/math/BigDecimal;)I
            ifle 67
            aload 1 /* v1 */
            goto 68
      StackMap locals:
      StackMap stack:
        67: aload 0 /* v0 */
      StackMap locals:
      StackMap stack: org.h2.value.Value
        68: iload 3 /* dataType */
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            areturn
        end local 5 // org.h2.value.CompareMode compareMode
        end local 4 // org.h2.engine.Mode databaseMode
        end local 3 // int dataType
        end local 2 // java.math.BigDecimal factor
        end local 1 // org.h2.value.Value v1
        end local 0 // org.h2.value.Value v0
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   69     0             v0  Lorg/h2/value/Value;
            0   69     1             v1  Lorg/h2/value/Value;
            0   69     2         factor  Ljava/math/BigDecimal;
            0   69     3       dataType  I
            0   69     4   databaseMode  Lorg/h2/engine/Mode;
            0   69     5    compareMode  Lorg/h2/value/CompareMode;
           12   16     6             t0  Lorg/h2/value/ValueTime;
           13   16     7             t1  Lorg/h2/value/ValueTime;
           14   16     8             n0  Ljava/math/BigDecimal;
           15   16     9             n1  Ljava/math/BigDecimal;
           17   22     6             d0  Lorg/h2/value/ValueDate;
           18   22     7             d1  Lorg/h2/value/ValueDate;
           19   22     8             a0  Ljava/math/BigDecimal;
           20   22     9             a1  Ljava/math/BigDecimal;
           23   36     6            ts0  Lorg/h2/value/ValueTimestamp;
           24   36     7            ts1  Lorg/h2/value/ValueTimestamp;
           25   36     8             a0  Ljava/math/BigDecimal;
           26   36     9             a1  Ljava/math/BigDecimal;
           29   36    10             dr  [Ljava/math/BigInteger;
           30   36    11    absoluteDay  J
           31   36    13      timeNanos  J
           37   60     6            ts0  Lorg/h2/value/ValueTimestampTimeZone;
           38   60     7            ts1  Lorg/h2/value/ValueTimestampTimeZone;
           39   60     8             a0  Ljava/math/BigDecimal;
           40   60     9             a1  Ljava/math/BigDecimal;
           44   60    10         offset  Ljava/math/BigDecimal;
           45   60    11    shortOffset  S
           46   60    12  shortOffsetBD  Ljava/math/BigDecimal;
           47   60    13             bd  Ljava/math/BigDecimal;
           52   60    14             dr  [Ljava/math/BigInteger;
           53   60    15    absoluteDay  J
           54   60    17      timeNanos  J
    MethodParameters:
              Name  Flags
      v0            
      v1            
      factor        
      dataType      
      databaseMode  
      compareMode   

  private static java.math.BigDecimal timestampToDecimal(long, long);
    descriptor: (JJ)Ljava/math/BigDecimal;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // long dateValue
        start local 2 // long timeNanos
         0: .line 352
            new java.math.BigDecimal
            dup
            lload 0 /* dateValue */
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
         1: .line 353
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            lload 2 /* timeNanos */
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
         2: .line 352
            invokespecial java.math.BigDecimal.<init>:(Ljava/math/BigInteger;)V
            areturn
        end local 2 // long timeNanos
        end local 0 // long dateValue
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0  dateValue  J
            0    3     2  timeNanos  J
    MethodParameters:
           Name  Flags
      dateValue  
      timeNanos  

  private static java.math.BigDecimal interpolateDecimal(java.math.BigDecimal, java.math.BigDecimal, java.math.BigDecimal);
    descriptor: (Ljava/math/BigDecimal;Ljava/math/BigDecimal;Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.math.BigDecimal d0
        start local 1 // java.math.BigDecimal d1
        start local 2 // java.math.BigDecimal factor
         0: .line 357
            aload 0 /* d0 */
            getstatic java.math.BigDecimal.ONE:Ljava/math/BigDecimal;
            aload 2 /* factor */
            invokevirtual java.math.BigDecimal.subtract:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            aload 1 /* d1 */
            aload 2 /* factor */
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            invokevirtual java.math.BigDecimal.add:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            areturn
        end local 2 // java.math.BigDecimal factor
        end local 1 // java.math.BigDecimal d1
        end local 0 // java.math.BigDecimal d0
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0      d0  Ljava/math/BigDecimal;
            0    1     1      d1  Ljava/math/BigDecimal;
            0    1     2  factor  Ljava/math/BigDecimal;
    MethodParameters:
        Name  Flags
      d0      
      d1      
      factor  

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.expression.aggregate.Percentile this
         0: .line 360
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 361
            return
        end local 0 // org.h2.expression.aggregate.Percentile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/expression/aggregate/Percentile;
}
SourceFile: "Percentile.java"