public abstract class org.h2.expression.analysis.DataAnalysisOperation extends org.h2.expression.Expression
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.h2.expression.analysis.DataAnalysisOperation
  super_class: org.h2.expression.Expression
{
  public static final int STAGE_RESET;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int STAGE_GROUP;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int STAGE_WINDOW;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  protected final org.h2.command.dml.Select select;
    descriptor: Lorg/h2/command/dml/Select;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected org.h2.expression.analysis.Window over;
    descriptor: Lorg/h2/expression/analysis/Window;
    flags: (0x0004) ACC_PROTECTED

  protected org.h2.result.SortOrder overOrderBySort;
    descriptor: Lorg/h2/result/SortOrder;
    flags: (0x0004) ACC_PROTECTED

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

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

  protected static org.h2.result.SortOrder createOrder(org.h2.engine.Session, java.util.ArrayList<org.h2.command.dml.SelectOrderBy>, int);
    descriptor: (Lorg/h2/engine/Session;Ljava/util/ArrayList;I)Lorg/h2/result/SortOrder;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=3
        start local 0 // org.h2.engine.Session session
        start local 1 // java.util.ArrayList orderBy
        start local 2 // int offset
         0: .line 78
            aload 1 /* orderBy */
            invokevirtual java.util.ArrayList.size:()I
            istore 3 /* size */
        start local 3 // int size
         1: .line 79
            iload 3 /* size */
            newarray 10
            astore 4 /* index */
        start local 4 // int[] index
         2: .line 80
            iload 3 /* size */
            newarray 10
            astore 5 /* sortType */
        start local 5 // int[] sortType
         3: .line 81
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 9
         5: .line 82
      StackMap locals: org.h2.engine.Session java.util.ArrayList int int int[] int[] int
      StackMap stack:
            aload 1 /* orderBy */
            iload 6 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.command.dml.SelectOrderBy
            astore 7 /* o */
        start local 7 // org.h2.command.dml.SelectOrderBy o
         6: .line 83
            aload 4 /* index */
            iload 6 /* i */
            iload 6 /* i */
            iload 2 /* offset */
            iadd
            iastore
         7: .line 84
            aload 5 /* sortType */
            iload 6 /* i */
            aload 7 /* o */
            getfield org.h2.command.dml.SelectOrderBy.sortType:I
            iastore
        end local 7 // org.h2.command.dml.SelectOrderBy o
         8: .line 81
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 6 /* i */
            iload 3 /* size */
            if_icmplt 5
        end local 6 // int i
        10: .line 86
            new org.h2.result.SortOrder
            dup
            aload 0 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            aload 4 /* index */
            aload 5 /* sortType */
            aconst_null
            invokespecial org.h2.result.SortOrder.<init>:(Lorg/h2/engine/Database;[I[ILjava/util/ArrayList;)V
            areturn
        end local 5 // int[] sortType
        end local 4 // int[] index
        end local 3 // int size
        end local 2 // int offset
        end local 1 // java.util.ArrayList orderBy
        end local 0 // org.h2.engine.Session session
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0   session  Lorg/h2/engine/Session;
            0   11     1   orderBy  Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
            0   11     2    offset  I
            1   11     3      size  I
            2   11     4     index  [I
            3   11     5  sortType  [I
            4   10     6         i  I
            6    8     7         o  Lorg/h2/command/dml/SelectOrderBy;
    Signature: (Lorg/h2/engine/Session;Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;I)Lorg/h2/result/SortOrder;
    MethodParameters:
         Name  Flags
      session  
      orderBy  
      offset   

  protected void <init>(org.h2.command.dml.Select);
    descriptor: (Lorg/h2/command/dml/Select;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.command.dml.Select select
         0: .line 89
            aload 0 /* this */
            invokespecial org.h2.expression.Expression.<init>:()V
         1: .line 90
            aload 0 /* this */
            aload 1 /* select */
            putfield org.h2.expression.analysis.DataAnalysisOperation.select:Lorg/h2/command/dml/Select;
         2: .line 91
            return
        end local 1 // org.h2.command.dml.Select select
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    3     1  select  Lorg/h2/command/dml/Select;
    MethodParameters:
        Name  Flags
      select  

  public void setOverCondition(org.h2.expression.analysis.Window);
    descriptor: (Lorg/h2/expression/analysis/Window;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.expression.analysis.Window over
         0: .line 100
            aload 0 /* this */
            aload 1 /* over */
            putfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
         1: .line 101
            return
        end local 1 // org.h2.expression.analysis.Window over
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    2     1  over  Lorg/h2/expression/analysis/Window;
    MethodParameters:
      Name  Flags
      over  

  public abstract boolean isAggregate();
    descriptor: ()Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  protected org.h2.result.SortOrder getOverOrderBySort();
    descriptor: ()Lorg/h2/result/SortOrder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
         0: .line 117
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.overOrderBySort:Lorg/h2/result/SortOrder;
            areturn
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/expression/analysis/DataAnalysisOperation;

  public final void mapColumns(org.h2.table.ColumnResolver, int, int);
    descriptor: (Lorg/h2/table/ColumnResolver;II)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.table.ColumnResolver resolver
        start local 2 // int level
        start local 3 // int state
         0: .line 122
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 5
         1: .line 123
            iload 3 /* state */
            ifeq 3
         2: .line 124
            ldc 90054
            aload 0 /* this */
            iconst_0
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getSQL:(Z)Ljava/lang/String;
            invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
            athrow
         3: .line 126
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* state */
         4: .line 127
            goto 8
         5: .line 128
      StackMap locals:
      StackMap stack:
            iload 3 /* state */
            iconst_2
            if_icmpne 7
         6: .line 129
            ldc 90054
            aload 0 /* this */
            iconst_0
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getSQL:(Z)Ljava/lang/String;
            invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
            athrow
         7: .line 131
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 3 /* state */
         8: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* resolver */
            iload 2 /* level */
            iload 3 /* state */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.mapColumnsAnalysis:(Lorg/h2/table/ColumnResolver;II)V
         9: .line 134
            return
        end local 3 // int state
        end local 2 // int level
        end local 1 // org.h2.table.ColumnResolver resolver
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   10     1  resolver  Lorg/h2/table/ColumnResolver;
            0   10     2     level  I
            0   10     3     state  I
    MethodParameters:
          Name  Flags
      resolver  
      level     
      state     

  protected void mapColumnsAnalysis(org.h2.table.ColumnResolver, int, int);
    descriptor: (Lorg/h2/table/ColumnResolver;II)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.table.ColumnResolver resolver
        start local 2 // int level
        start local 3 // int innerState
         0: .line 147
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 2
         1: .line 148
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* resolver */
            iload 2 /* level */
            invokevirtual org.h2.expression.analysis.Window.mapColumns:(Lorg/h2/table/ColumnResolver;I)V
         2: .line 150
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int innerState
        end local 2 // int level
        end local 1 // org.h2.table.ColumnResolver resolver
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    3     1    resolver  Lorg/h2/table/ColumnResolver;
            0    3     2       level  I
            0    3     3  innerState  I
    MethodParameters:
            Name  Flags
      resolver    
      level       
      innerState  

  public org.h2.expression.Expression optimize(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=2
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
         0: .line 154
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 31
         1: .line 155
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* session */
            invokevirtual org.h2.expression.analysis.Window.optimize:(Lorg/h2/engine/Session;)V
         2: .line 156
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            invokevirtual org.h2.expression.analysis.Window.getOrderBy:()Ljava/util/ArrayList;
            astore 2 /* orderBy */
        start local 2 // java.util.ArrayList orderBy
         3: .line 157
            aload 2 /* orderBy */
            ifnull 6
         4: .line 158
            aload 0 /* this */
            aload 1 /* session */
            aload 2 /* orderBy */
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumExpressions:()I
            invokestatic org.h2.expression.analysis.DataAnalysisOperation.createOrder:(Lorg/h2/engine/Session;Ljava/util/ArrayList;I)Lorg/h2/result/SortOrder;
            putfield org.h2.expression.analysis.DataAnalysisOperation.overOrderBySort:Lorg/h2/result/SortOrder;
         5: .line 159
            goto 8
      StackMap locals: java.util.ArrayList
      StackMap stack:
         6: aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.isAggregate:()Z
            ifne 8
         7: .line 160
            aload 0 /* this */
            new org.h2.result.SortOrder
            dup
            aload 1 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumExpressions:()I
            newarray 10
            iconst_0
            newarray 10
            aconst_null
            invokespecial org.h2.result.SortOrder.<init>:(Lorg/h2/engine/Database;[I[ILjava/util/ArrayList;)V
            putfield org.h2.expression.analysis.DataAnalysisOperation.overOrderBySort:Lorg/h2/result/SortOrder;
         8: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            invokevirtual org.h2.expression.analysis.Window.getWindowFrame:()Lorg/h2/expression/analysis/WindowFrame;
            astore 3 /* frame */
        start local 3 // org.h2.expression.analysis.WindowFrame frame
         9: .line 163
            aload 3 /* frame */
            ifnull 31
        10: .line 164
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumExpressions:()I
            istore 4 /* index */
        start local 4 // int index
        11: .line 165
            iconst_0
            istore 5 /* orderBySize */
        start local 5 // int orderBySize
        12: .line 166
            aload 2 /* orderBy */
            ifnull 15
        13: .line 167
            aload 2 /* orderBy */
            invokevirtual java.util.ArrayList.size:()I
            istore 5 /* orderBySize */
        14: .line 168
            iload 4 /* index */
            iload 5 /* orderBySize */
            iadd
            istore 4 /* index */
        15: .line 170
      StackMap locals: org.h2.expression.analysis.WindowFrame int int
      StackMap stack:
            iconst_0
            istore 6 /* n */
        start local 6 // int n
        16: .line 171
            aload 3 /* frame */
            invokevirtual org.h2.expression.analysis.WindowFrame.getStarting:()Lorg/h2/expression/analysis/WindowFrameBound;
            astore 7 /* bound */
        start local 7 // org.h2.expression.analysis.WindowFrameBound bound
        17: .line 172
            aload 7 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.isParameterized:()Z
            ifeq 23
        18: .line 173
            iload 5 /* orderBySize */
            iconst_1
            if_icmpeq 20
        19: .line 174
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getSingleSortKeyException:()Lorg/h2/message/DbException;
            athrow
        20: .line 176
      StackMap locals: int org.h2.expression.analysis.WindowFrameBound
      StackMap stack:
            aload 7 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.isVariable:()Z
            ifeq 23
        21: .line 177
            aload 7 /* bound */
            iload 4 /* index */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.setExpressionIndex:(I)V
        22: .line 178
            iinc 6 /* n */ 1
        23: .line 181
      StackMap locals:
      StackMap stack:
            aload 3 /* frame */
            invokevirtual org.h2.expression.analysis.WindowFrame.getFollowing:()Lorg/h2/expression/analysis/WindowFrameBound;
            astore 7 /* bound */
        24: .line 182
            aload 7 /* bound */
            ifnull 30
            aload 7 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.isParameterized:()Z
            ifeq 30
        25: .line 183
            iload 5 /* orderBySize */
            iconst_1
            if_icmpeq 27
        26: .line 184
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getSingleSortKeyException:()Lorg/h2/message/DbException;
            athrow
        27: .line 186
      StackMap locals:
      StackMap stack:
            aload 7 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.isVariable:()Z
            ifeq 30
        28: .line 187
            aload 7 /* bound */
            iload 4 /* index */
            iload 6 /* n */
            iadd
            invokevirtual org.h2.expression.analysis.WindowFrameBound.setExpressionIndex:(I)V
        29: .line 188
            iinc 6 /* n */ 1
        30: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 6 /* n */
            putfield org.h2.expression.analysis.DataAnalysisOperation.numFrameExpressions:I
        end local 7 // org.h2.expression.analysis.WindowFrameBound bound
        end local 6 // int n
        end local 5 // int orderBySize
        end local 4 // int index
        end local 3 // org.h2.expression.analysis.WindowFrame frame
        end local 2 // java.util.ArrayList orderBy
        31: .line 194
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   32     0         this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   32     1      session  Lorg/h2/engine/Session;
            3   31     2      orderBy  Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
            9   31     3        frame  Lorg/h2/expression/analysis/WindowFrame;
           11   31     4        index  I
           12   31     5  orderBySize  I
           16   31     6            n  I
           17   31     7        bound  Lorg/h2/expression/analysis/WindowFrameBound;
    MethodParameters:
         Name  Flags
      session  

  private org.h2.message.DbException getSingleSortKeyException();
    descriptor: ()Lorg/h2/message/DbException;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
         0: .line 198
            aload 0 /* this */
            iconst_0
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getSQL:(Z)Ljava/lang/String;
            astore 1 /* sql */
        start local 1 // java.lang.String sql
         1: .line 199
            aload 1 /* sql */
            aload 1 /* sql */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            ldc "exactly one sort key is required for RANGE units"
            invokestatic org.h2.message.DbException.getSyntaxError:(Ljava/lang/String;ILjava/lang/String;)Lorg/h2/message/DbException;
            areturn
        end local 1 // java.lang.String sql
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            1    2     1   sql  Ljava/lang/String;

  public void setEvaluatable(org.h2.table.TableFilter, boolean);
    descriptor: (Lorg/h2/table/TableFilter;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.table.TableFilter tableFilter
        start local 2 // boolean b
         0: .line 204
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 2
         1: .line 205
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* tableFilter */
            iload 2 /* b */
            invokevirtual org.h2.expression.analysis.Window.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         2: .line 207
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean b
        end local 1 // org.h2.table.TableFilter tableFilter
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    3     1  tableFilter  Lorg/h2/table/TableFilter;
            0    3     2            b  Z
    MethodParameters:
             Name  Flags
      tableFilter  
      b            

  public final void updateAggregate(org.h2.engine.Session, int);
    descriptor: (Lorg/h2/engine/Session;I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // int stage
         0: .line 211
            iload 2 /* stage */
            ifne 4
         1: .line 212
            aload 0 /* this */
            aload 1 /* session */
            iconst_0
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.updateGroupAggregates:(Lorg/h2/engine/Session;I)V
         2: .line 213
            aload 0 /* this */
            iconst_0
            putfield org.h2.expression.analysis.DataAnalysisOperation.lastGroupRowId:I
         3: .line 214
            return
         4: .line 216
      StackMap locals:
      StackMap stack:
            iload 2 /* stage */
            iconst_2
            if_icmpne 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: istore 3 /* window */
        start local 3 // boolean window
         7: .line 217
            iload 3 /* window */
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 8
            iconst_1
            goto 9
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session int int
      StackMap stack: int
         8: iconst_0
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session int int
      StackMap stack: int int
         9: if_icmpeq 13
        10: .line 218
            iload 3 /* window */
            ifne 12
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.select:Lorg/h2/command/dml/Select;
            invokevirtual org.h2.command.dml.Select.isWindowQuery:()Z
            ifeq 12
        11: .line 219
            aload 0 /* this */
            aload 1 /* session */
            iload 2 /* stage */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.updateGroupAggregates:(Lorg/h2/engine/Session;I)V
        12: .line 221
      StackMap locals:
      StackMap stack:
            return
        13: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.select:Lorg/h2/command/dml/Select;
            iload 3 /* window */
            invokevirtual org.h2.command.dml.Select.getGroupDataIfCurrent:(Z)Lorg/h2/command/dml/SelectGroups;
            astore 4 /* groupData */
        start local 4 // org.h2.command.dml.SelectGroups groupData
        14: .line 224
            aload 4 /* groupData */
            ifnonnull 16
        15: .line 226
            return
        16: .line 229
      StackMap locals: org.h2.command.dml.SelectGroups
      StackMap stack:
            aload 4 /* groupData */
            invokevirtual org.h2.command.dml.SelectGroups.getCurrentGroupRowId:()I
            istore 5 /* groupRowId */
        start local 5 // int groupRowId
        17: .line 230
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.lastGroupRowId:I
            iload 5 /* groupRowId */
            if_icmpne 19
        18: .line 232
            return
        19: .line 234
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 5 /* groupRowId */
            putfield org.h2.expression.analysis.DataAnalysisOperation.lastGroupRowId:I
        20: .line 236
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 23
        21: .line 237
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.select:Lorg/h2/command/dml/Select;
            invokevirtual org.h2.command.dml.Select.isGroupQuery:()Z
            ifne 23
        22: .line 238
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* session */
            iload 2 /* stage */
            invokevirtual org.h2.expression.analysis.Window.updateAggregate:(Lorg/h2/engine/Session;I)V
        23: .line 241
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* session */
            aload 4 /* groupData */
            iload 5 /* groupRowId */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.updateAggregate:(Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;I)V
        24: .line 242
            return
        end local 5 // int groupRowId
        end local 4 // org.h2.command.dml.SelectGroups groupData
        end local 3 // boolean window
        end local 2 // int stage
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   25     0        this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   25     1     session  Lorg/h2/engine/Session;
            0   25     2       stage  I
            7   25     3      window  Z
           14   25     4   groupData  Lorg/h2/command/dml/SelectGroups;
           17   25     5  groupRowId  I
    MethodParameters:
         Name  Flags
      session  
      stage    

  protected abstract void updateAggregate(org.h2.engine.Session, org.h2.command.dml.SelectGroups, int);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;I)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
            Name  Flags
      session     
      groupData   
      groupRowId  

  protected void updateGroupAggregates(org.h2.engine.Session, int);
    descriptor: (Lorg/h2/engine/Session;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // int stage
         0: .line 266
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 2
         1: .line 267
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* session */
            iload 2 /* stage */
            invokevirtual org.h2.expression.analysis.Window.updateAggregate:(Lorg/h2/engine/Session;I)V
         2: .line 269
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int stage
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    3     1  session  Lorg/h2/engine/Session;
            0    3     2    stage  I
    MethodParameters:
         Name  Flags
      session  
      stage    

  protected abstract int getNumExpressions();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  private int getNumFrameExpressions();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
         0: .line 284
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.numFrameExpressions:I
            ireturn
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/expression/analysis/DataAnalysisOperation;

  protected abstract void rememberExpressions(org.h2.engine.Session, org.h2.value.Value[]);
    descriptor: (Lorg/h2/engine/Session;[Lorg/h2/value/Value;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      session  
      array    

  protected java.lang.Object getWindowData(org.h2.engine.Session, org.h2.command.dml.SelectGroups, boolean);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;Z)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.command.dml.SelectGroups groupData
        start local 3 // boolean forOrderBy
         0: .line 310
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* session */
            invokevirtual org.h2.expression.analysis.Window.getCurrentKey:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            astore 5 /* key */
        start local 5 // org.h2.value.Value key
         1: .line 311
            aload 2 /* groupData */
            aload 0 /* this */
            aload 5 /* key */
            invokevirtual org.h2.command.dml.SelectGroups.getWindowExprData:(Lorg/h2/expression/analysis/DataAnalysisOperation;Lorg/h2/value/Value;)Lorg/h2/expression/analysis/PartitionData;
            astore 6 /* partition */
        start local 6 // org.h2.expression.analysis.PartitionData partition
         2: .line 312
            aload 6 /* partition */
            ifnonnull 8
         3: .line 313
            iload 3 /* forOrderBy */
            ifeq 4
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            goto 5
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups int top org.h2.value.Value org.h2.expression.analysis.PartitionData
      StackMap stack:
         4: aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.createAggregateData:()Ljava/lang/Object;
      StackMap locals:
      StackMap stack: java.lang.Object
         5: astore 4 /* data */
        start local 4 // java.lang.Object data
         6: .line 314
            aload 2 /* groupData */
            aload 0 /* this */
            aload 5 /* key */
            new org.h2.expression.analysis.PartitionData
            dup
            aload 4 /* data */
            invokespecial org.h2.expression.analysis.PartitionData.<init>:(Ljava/lang/Object;)V
            invokevirtual org.h2.command.dml.SelectGroups.setWindowExprData:(Lorg/h2/expression/analysis/DataAnalysisOperation;Lorg/h2/value/Value;Lorg/h2/expression/analysis/PartitionData;)V
         7: .line 315
            goto 9
        end local 4 // java.lang.Object data
         8: .line 316
      StackMap locals:
      StackMap stack:
            aload 6 /* partition */
            invokevirtual org.h2.expression.analysis.PartitionData.getData:()Ljava/lang/Object;
            astore 4 /* data */
        start local 4 // java.lang.Object data
         9: .line 318
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups int java.lang.Object org.h2.value.Value org.h2.expression.analysis.PartitionData
      StackMap stack:
            aload 4 /* data */
            areturn
        end local 6 // org.h2.expression.analysis.PartitionData partition
        end local 5 // org.h2.value.Value key
        end local 4 // java.lang.Object data
        end local 3 // boolean forOrderBy
        end local 2 // org.h2.command.dml.SelectGroups groupData
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   10     1     session  Lorg/h2/engine/Session;
            0   10     2   groupData  Lorg/h2/command/dml/SelectGroups;
            0   10     3  forOrderBy  Z
            6    8     4        data  Ljava/lang/Object;
            9   10     4        data  Ljava/lang/Object;
            1   10     5         key  Lorg/h2/value/Value;
            2   10     6   partition  Lorg/h2/expression/analysis/PartitionData;
    MethodParameters:
            Name  Flags
      session     
      groupData   
      forOrderBy  

  protected java.lang.Object getGroupData(org.h2.command.dml.SelectGroups, boolean);
    descriptor: (Lorg/h2/command/dml/SelectGroups;Z)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.command.dml.SelectGroups groupData
        start local 2 // boolean ifExists
         0: .line 333
            aload 1 /* groupData */
            aload 0 /* this */
            invokevirtual org.h2.command.dml.SelectGroups.getCurrentGroupExprData:(Lorg/h2/expression/Expression;)Ljava/lang/Object;
            astore 3 /* data */
        start local 3 // java.lang.Object data
         1: .line 334
            aload 3 /* data */
            ifnonnull 6
         2: .line 335
            iload 2 /* ifExists */
            ifeq 4
         3: .line 336
            aconst_null
            areturn
         4: .line 338
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.createAggregateData:()Ljava/lang/Object;
            astore 3 /* data */
         5: .line 339
            aload 1 /* groupData */
            aload 0 /* this */
            aload 3 /* data */
            invokevirtual org.h2.command.dml.SelectGroups.setCurrentGroupExprData:(Lorg/h2/expression/Expression;Ljava/lang/Object;)V
         6: .line 341
      StackMap locals:
      StackMap stack:
            aload 3 /* data */
            areturn
        end local 3 // java.lang.Object data
        end local 2 // boolean ifExists
        end local 1 // org.h2.command.dml.SelectGroups groupData
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    7     1  groupData  Lorg/h2/command/dml/SelectGroups;
            0    7     2   ifExists  Z
            1    7     3       data  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      groupData  
      ifExists   

  protected abstract java.lang.Object createAggregateData();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public boolean isEverything(org.h2.expression.ExpressionVisitor);
    descriptor: (Lorg/h2/expression/ExpressionVisitor;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.expression.ExpressionVisitor visitor
         0: .line 353
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnonnull 2
         1: .line 354
            iconst_1
            ireturn
         2: .line 356
      StackMap locals:
      StackMap stack:
            aload 1 /* visitor */
            invokevirtual org.h2.expression.ExpressionVisitor.getType:()I
            tableswitch { // 0 - 10
                    0: 3
                    1: 3
                    2: 3
                    3: 4
                    4: 4
                    5: 4
                    6: 4
                    7: 4
                    8: 3
                    9: 4
                   10: 4
              default: 5
          }
         3: .line 361
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 369
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         5: .line 371
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* visitor */
            invokevirtual org.h2.expression.ExpressionVisitor.getType:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // org.h2.expression.ExpressionVisitor visitor
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    6     1  visitor  Lorg/h2/expression/ExpressionVisitor;
    MethodParameters:
         Name  Flags
      visitor  

  public org.h2.value.Value getValue(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)Lorg/h2/value/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
         0: .line 377
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.select:Lorg/h2/command/dml/Select;
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: org.h2.command.dml.Select
         1: iconst_0
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session
      StackMap stack: org.h2.command.dml.Select int
         2: invokevirtual org.h2.command.dml.Select.getGroupDataIfCurrent:(Z)Lorg/h2/command/dml/SelectGroups;
            astore 2 /* groupData */
        start local 2 // org.h2.command.dml.SelectGroups groupData
         3: .line 378
            aload 2 /* groupData */
            ifnonnull 5
         4: .line 379
            ldc 90054
            aload 0 /* this */
            iconst_0
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getSQL:(Z)Ljava/lang/String;
            invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
            athrow
         5: .line 381
      StackMap locals: org.h2.command.dml.SelectGroups
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnonnull 6
            aload 0 /* this */
            aload 1 /* session */
            aload 0 /* this */
            aload 2 /* groupData */
            iconst_1
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getGroupData:(Lorg/h2/command/dml/SelectGroups;Z)Ljava/lang/Object;
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getAggregatedValue:(Lorg/h2/engine/Session;Ljava/lang/Object;)Lorg/h2/value/Value;
            goto 7
         6: .line 382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* session */
            aload 2 /* groupData */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getWindowResult:(Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;)Lorg/h2/value/Value;
         7: .line 381
      StackMap locals:
      StackMap stack: org.h2.value.Value
            areturn
        end local 2 // org.h2.command.dml.SelectGroups groupData
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    8     1    session  Lorg/h2/engine/Session;
            3    8     2  groupData  Lorg/h2/command/dml/SelectGroups;
    MethodParameters:
         Name  Flags
      session  

  private org.h2.value.Value getWindowResult(org.h2.engine.Session, org.h2.command.dml.SelectGroups);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;)Lorg/h2/value/Value;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.command.dml.SelectGroups groupData
         0: .line 398
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            invokevirtual org.h2.expression.analysis.Window.getOrderBy:()Ljava/util/ArrayList;
            ifnull 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 5 /* forOrderBy */
        start local 5 // boolean forOrderBy
         3: .line 399
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* session */
            invokevirtual org.h2.expression.analysis.Window.getCurrentKey:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            astore 6 /* key */
        start local 6 // org.h2.value.Value key
         4: .line 400
            aload 2 /* groupData */
            aload 0 /* this */
            aload 6 /* key */
            invokevirtual org.h2.command.dml.SelectGroups.getWindowExprData:(Lorg/h2/expression/analysis/DataAnalysisOperation;Lorg/h2/value/Value;)Lorg/h2/expression/analysis/PartitionData;
            astore 3 /* partition */
        start local 3 // org.h2.expression.analysis.PartitionData partition
         5: .line 401
            aload 3 /* partition */
            ifnonnull 12
         6: .line 403
            iload 5 /* forOrderBy */
            ifeq 7
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            goto 8
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups org.h2.expression.analysis.PartitionData top int org.h2.value.Value
      StackMap stack:
         7: aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.createAggregateData:()Ljava/lang/Object;
      StackMap locals:
      StackMap stack: java.lang.Object
         8: astore 4 /* data */
        start local 4 // java.lang.Object data
         9: .line 404
            new org.h2.expression.analysis.PartitionData
            dup
            aload 4 /* data */
            invokespecial org.h2.expression.analysis.PartitionData.<init>:(Ljava/lang/Object;)V
            astore 3 /* partition */
        10: .line 405
            aload 2 /* groupData */
            aload 0 /* this */
            aload 6 /* key */
            aload 3 /* partition */
            invokevirtual org.h2.command.dml.SelectGroups.setWindowExprData:(Lorg/h2/expression/analysis/DataAnalysisOperation;Lorg/h2/value/Value;Lorg/h2/expression/analysis/PartitionData;)V
        11: .line 406
            goto 13
        end local 4 // java.lang.Object data
        12: .line 407
      StackMap locals:
      StackMap stack:
            aload 3 /* partition */
            invokevirtual org.h2.expression.analysis.PartitionData.getData:()Ljava/lang/Object;
            astore 4 /* data */
        start local 4 // java.lang.Object data
        13: .line 409
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups org.h2.expression.analysis.PartitionData java.lang.Object int org.h2.value.Value
      StackMap stack:
            iload 5 /* forOrderBy */
            ifne 14
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.isAggregate:()Z
            ifne 18
        14: .line 410
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* session */
            aload 2 /* groupData */
            aload 3 /* partition */
            aload 4 /* data */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getOrderedResult:(Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;Lorg/h2/expression/analysis/PartitionData;Ljava/lang/Object;)Lorg/h2/value/Value;
            astore 7 /* result */
        start local 7 // org.h2.value.Value result
        15: .line 411
            aload 7 /* result */
            ifnonnull 17
        16: .line 412
            aload 0 /* this */
            aload 1 /* session */
            aconst_null
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getAggregatedValue:(Lorg/h2/engine/Session;Ljava/lang/Object;)Lorg/h2/value/Value;
            areturn
        17: .line 414
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 7 /* result */
            areturn
        end local 7 // org.h2.value.Value result
        18: .line 417
      StackMap locals:
      StackMap stack:
            aload 3 /* partition */
            invokevirtual org.h2.expression.analysis.PartitionData.getResult:()Lorg/h2/value/Value;
            astore 7 /* result */
        start local 7 // org.h2.value.Value result
        19: .line 418
            aload 7 /* result */
            ifnonnull 22
        20: .line 419
            aload 0 /* this */
            aload 1 /* session */
            aload 4 /* data */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getAggregatedValue:(Lorg/h2/engine/Session;Ljava/lang/Object;)Lorg/h2/value/Value;
            astore 7 /* result */
        21: .line 420
            aload 3 /* partition */
            aload 7 /* result */
            invokevirtual org.h2.expression.analysis.PartitionData.setResult:(Lorg/h2/value/Value;)V
        22: .line 422
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 7 /* result */
            areturn
        end local 7 // org.h2.value.Value result
        end local 6 // org.h2.value.Value key
        end local 5 // boolean forOrderBy
        end local 4 // java.lang.Object data
        end local 3 // org.h2.expression.analysis.PartitionData partition
        end local 2 // org.h2.command.dml.SelectGroups groupData
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   23     1     session  Lorg/h2/engine/Session;
            0   23     2   groupData  Lorg/h2/command/dml/SelectGroups;
            5   23     3   partition  Lorg/h2/expression/analysis/PartitionData;
            9   12     4        data  Ljava/lang/Object;
           13   23     4        data  Ljava/lang/Object;
            3   23     5  forOrderBy  Z
            4   23     6         key  Lorg/h2/value/Value;
           15   18     7      result  Lorg/h2/value/Value;
           19   23     7      result  Lorg/h2/value/Value;
    MethodParameters:
           Name  Flags
      session    
      groupData  

  protected abstract org.h2.value.Value getAggregatedValue(org.h2.engine.Session, java.lang.Object);
    descriptor: (Lorg/h2/engine/Session;Ljava/lang/Object;)Lorg/h2/value/Value;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
               Name  Flags
      session        
      aggregateData  

  protected void updateOrderedAggregate(org.h2.engine.Session, org.h2.command.dml.SelectGroups, int, java.util.ArrayList<org.h2.command.dml.SelectOrderBy>);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;ILjava/util/ArrayList;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=11, args_size=5
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.command.dml.SelectGroups groupData
        start local 3 // int groupRowId
        start local 4 // java.util.ArrayList orderBy
         0: .line 450
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumExpressions:()I
            istore 5 /* ne */
        start local 5 // int ne
         1: .line 451
            aload 4 /* orderBy */
            ifnull 2
            aload 4 /* orderBy */
            invokevirtual java.util.ArrayList.size:()I
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 6 /* size */
        start local 6 // int size
         4: .line 452
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumFrameExpressions:()I
            istore 7 /* frameSize */
        start local 7 // int frameSize
         5: .line 453
            iload 5 /* ne */
            iload 6 /* size */
            iadd
            iload 7 /* frameSize */
            iadd
            iconst_1
            iadd
            anewarray org.h2.value.Value
            astore 8 /* array */
        start local 8 // org.h2.value.Value[] array
         6: .line 454
            aload 0 /* this */
            aload 1 /* session */
            aload 8 /* array */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.rememberExpressions:(Lorg/h2/engine/Session;[Lorg/h2/value/Value;)V
         7: .line 455
            iconst_0
            istore 9 /* i */
        start local 9 // int i
         8: goto 12
         9: .line 457
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups int java.util.ArrayList int int int org.h2.value.Value[] int
      StackMap stack:
            aload 4 /* orderBy */
            iload 9 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.command.dml.SelectOrderBy
            astore 10 /* o */
        start local 10 // org.h2.command.dml.SelectOrderBy o
        10: .line 458
            aload 8 /* array */
            iload 5 /* ne */
            iinc 5 /* ne */ 1
            aload 10 /* o */
            getfield org.h2.command.dml.SelectOrderBy.expression:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            aastore
        end local 10 // org.h2.command.dml.SelectOrderBy o
        11: .line 455
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 9 /* i */
            iload 6 /* size */
            if_icmplt 9
        end local 9 // int i
        13: .line 460
            iload 7 /* frameSize */
            ifle 21
        14: .line 461
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            invokevirtual org.h2.expression.analysis.Window.getWindowFrame:()Lorg/h2/expression/analysis/WindowFrame;
            astore 9 /* frame */
        start local 9 // org.h2.expression.analysis.WindowFrame frame
        15: .line 462
            aload 9 /* frame */
            invokevirtual org.h2.expression.analysis.WindowFrame.getStarting:()Lorg/h2/expression/analysis/WindowFrameBound;
            astore 10 /* bound */
        start local 10 // org.h2.expression.analysis.WindowFrameBound bound
        16: .line 463
            aload 10 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.isVariable:()Z
            ifeq 18
        17: .line 464
            aload 8 /* array */
            iload 5 /* ne */
            iinc 5 /* ne */ 1
            aload 10 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.getValue:()Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            aastore
        18: .line 466
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups int java.util.ArrayList int int int org.h2.value.Value[] org.h2.expression.analysis.WindowFrame org.h2.expression.analysis.WindowFrameBound
      StackMap stack:
            aload 9 /* frame */
            invokevirtual org.h2.expression.analysis.WindowFrame.getFollowing:()Lorg/h2/expression/analysis/WindowFrameBound;
            astore 10 /* bound */
        19: .line 467
            aload 10 /* bound */
            ifnull 21
            aload 10 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.isVariable:()Z
            ifeq 21
        20: .line 468
            aload 8 /* array */
            iload 5 /* ne */
            iinc 5 /* ne */ 1
            aload 10 /* bound */
            invokevirtual org.h2.expression.analysis.WindowFrameBound.getValue:()Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            aastore
        end local 10 // org.h2.expression.analysis.WindowFrameBound bound
        end local 9 // org.h2.expression.analysis.WindowFrame frame
        21: .line 471
      StackMap locals:
      StackMap stack:
            aload 8 /* array */
            iload 5 /* ne */
            iload 3 /* groupRowId */
            invokestatic org.h2.value.ValueInt.get:(I)Lorg/h2/value/ValueInt;
            aastore
        22: .line 473
            aload 0 /* this */
            aload 1 /* session */
            aload 2 /* groupData */
            iconst_1
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getWindowData:(Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;Z)Ljava/lang/Object;
            checkcast java.util.ArrayList
            astore 9 /* data */
        start local 9 // java.util.ArrayList data
        23: .line 474
            aload 9 /* data */
            aload 8 /* array */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        24: .line 475
            return
        end local 9 // java.util.ArrayList data
        end local 8 // org.h2.value.Value[] array
        end local 7 // int frameSize
        end local 6 // int size
        end local 5 // int ne
        end local 4 // java.util.ArrayList orderBy
        end local 3 // int groupRowId
        end local 2 // org.h2.command.dml.SelectGroups groupData
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   25     0        this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   25     1     session  Lorg/h2/engine/Session;
            0   25     2   groupData  Lorg/h2/command/dml/SelectGroups;
            0   25     3  groupRowId  I
            0   25     4     orderBy  Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
            1   25     5          ne  I
            4   25     6        size  I
            5   25     7   frameSize  I
            6   25     8       array  [Lorg/h2/value/Value;
            8   13     9           i  I
           10   11    10           o  Lorg/h2/command/dml/SelectOrderBy;
           15   21     9       frame  Lorg/h2/expression/analysis/WindowFrame;
           16   21    10       bound  Lorg/h2/expression/analysis/WindowFrameBound;
           23   25     9        data  Ljava/util/ArrayList<[Lorg/h2/value/Value;>;
    Signature: (Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;ILjava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;)V
    MethodParameters:
            Name  Flags
      session     
      groupData   
      groupRowId  
      orderBy     

  private org.h2.value.Value getOrderedResult(org.h2.engine.Session, org.h2.command.dml.SelectGroups, org.h2.expression.analysis.PartitionData, java.lang.Object);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/command/dml/SelectGroups;Lorg/h2/expression/analysis/PartitionData;Ljava/lang/Object;)Lorg/h2/value/Value;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.command.dml.SelectGroups groupData
        start local 3 // org.h2.expression.analysis.PartitionData partition
        start local 4 // java.lang.Object data
         0: .line 478
            aload 3 /* partition */
            invokevirtual org.h2.expression.analysis.PartitionData.getOrderedResult:()Ljava/util/HashMap;
            astore 5 /* result */
        start local 5 // java.util.HashMap result
         1: .line 479
            aload 5 /* result */
            ifnonnull 12
         2: .line 480
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 5 /* result */
         3: .line 482
            aload 4 /* data */
            checkcast java.util.ArrayList
            astore 6 /* orderedData */
        start local 6 // java.util.ArrayList orderedData
         4: .line 483
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumExpressions:()I
            istore 7 /* rowIdColumn */
        start local 7 // int rowIdColumn
         5: .line 484
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            invokevirtual org.h2.expression.analysis.Window.getOrderBy:()Ljava/util/ArrayList;
            astore 8 /* orderBy */
        start local 8 // java.util.ArrayList orderBy
         6: .line 485
            aload 8 /* orderBy */
            ifnull 9
         7: .line 486
            iload 7 /* rowIdColumn */
            aload 8 /* orderBy */
            invokevirtual java.util.ArrayList.size:()I
            iadd
            istore 7 /* rowIdColumn */
         8: .line 487
            aload 6 /* orderedData */
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.overOrderBySort:Lorg/h2/result/SortOrder;
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
         9: .line 489
      StackMap locals: org.h2.expression.analysis.DataAnalysisOperation org.h2.engine.Session org.h2.command.dml.SelectGroups org.h2.expression.analysis.PartitionData java.lang.Object java.util.HashMap java.util.ArrayList int java.util.ArrayList
      StackMap stack:
            iload 7 /* rowIdColumn */
            aload 0 /* this */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getNumFrameExpressions:()I
            iadd
            istore 7 /* rowIdColumn */
        10: .line 490
            aload 0 /* this */
            aload 1 /* session */
            aload 5 /* result */
            aload 6 /* orderedData */
            iload 7 /* rowIdColumn */
            invokevirtual org.h2.expression.analysis.DataAnalysisOperation.getOrderedResultLoop:(Lorg/h2/engine/Session;Ljava/util/HashMap;Ljava/util/ArrayList;I)V
        11: .line 491
            aload 3 /* partition */
            aload 5 /* result */
            invokevirtual org.h2.expression.analysis.PartitionData.setOrderedResult:(Ljava/util/HashMap;)V
        end local 8 // java.util.ArrayList orderBy
        end local 7 // int rowIdColumn
        end local 6 // java.util.ArrayList orderedData
        12: .line 493
      StackMap locals:
      StackMap stack:
            aload 5 /* result */
            aload 2 /* groupData */
            invokevirtual org.h2.command.dml.SelectGroups.getCurrentGroupRowId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.h2.value.Value
            areturn
        end local 5 // java.util.HashMap result
        end local 4 // java.lang.Object data
        end local 3 // org.h2.expression.analysis.PartitionData partition
        end local 2 // org.h2.command.dml.SelectGroups groupData
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0   13     1      session  Lorg/h2/engine/Session;
            0   13     2    groupData  Lorg/h2/command/dml/SelectGroups;
            0   13     3    partition  Lorg/h2/expression/analysis/PartitionData;
            0   13     4         data  Ljava/lang/Object;
            1   13     5       result  Ljava/util/HashMap<Ljava/lang/Integer;Lorg/h2/value/Value;>;
            4   12     6  orderedData  Ljava/util/ArrayList<[Lorg/h2/value/Value;>;
            5   12     7  rowIdColumn  I
            6   12     8      orderBy  Ljava/util/ArrayList<Lorg/h2/command/dml/SelectOrderBy;>;
    MethodParameters:
           Name  Flags
      session    
      groupData  
      partition  
      data       

  protected abstract void getOrderedResultLoop(org.h2.engine.Session, java.util.HashMap<java.lang.Integer, org.h2.value.Value>, java.util.ArrayList<org.h2.value.Value[]>, );
    descriptor: (Lorg/h2/engine/Session;Ljava/util/HashMap;Ljava/util/ArrayList;I)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Lorg/h2/engine/Session;Ljava/util/HashMap<Ljava/lang/Integer;Lorg/h2/value/Value;>;Ljava/util/ArrayList<[Lorg/h2/value/Value;>;I)V
    MethodParameters:
             Name  Flags
      session      
      result       
      ordered      
      rowIdColumn  

  protected java.lang.StringBuilder appendTailConditions(java.lang.StringBuilder, boolean);
    descriptor: (Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.expression.analysis.DataAnalysisOperation this
        start local 1 // java.lang.StringBuilder builder
        start local 2 // boolean alwaysQuote
         0: .line 522
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            ifnull 3
         1: .line 523
            aload 1 /* builder */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 524
            aload 0 /* this */
            getfield org.h2.expression.analysis.DataAnalysisOperation.over:Lorg/h2/expression/analysis/Window;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.analysis.Window.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            pop
         3: .line 526
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            areturn
        end local 2 // boolean alwaysQuote
        end local 1 // java.lang.StringBuilder builder
        end local 0 // org.h2.expression.analysis.DataAnalysisOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/h2/expression/analysis/DataAnalysisOperation;
            0    4     1      builder  Ljava/lang/StringBuilder;
            0    4     2  alwaysQuote  Z
    MethodParameters:
             Name  Flags
      builder      
      alwaysQuote  
}
SourceFile: "DataAnalysisOperation.java"