public class org.h2.expression.IntervalOperation extends org.h2.expression.Expression
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.expression.IntervalOperation
  super_class: org.h2.expression.Expression
{
  private final org.h2.expression.IntervalOperation$IntervalOpType opType;
    descriptor: Lorg/h2/expression/IntervalOperation$IntervalOpType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.h2.expression.Expression left;
    descriptor: Lorg/h2/expression/Expression;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.expression.Expression right;
    descriptor: Lorg/h2/expression/Expression;
    flags: (0x0002) ACC_PRIVATE

  private org.h2.value.TypeInfo type;
    descriptor: Lorg/h2/value/TypeInfo;
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  private static java.math.BigInteger nanosFromValue(org.h2.value.Value);
    descriptor: (Lorg/h2/value/Value;)Ljava/math/BigInteger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.h2.value.Value v
         0: .line 84
            aload 0 /* v */
            invokestatic org.h2.util.DateTimeUtils.dateAndTimeFromValue:(Lorg/h2/value/Value;)[J
            astore 1 /* a */
        start local 1 // long[] a
         1: .line 85
            aload 1 /* a */
            iconst_0
            laload
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.multiply:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
         2: .line 86
            aload 1 /* a */
            iconst_1
            laload
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
         3: .line 85
            areturn
        end local 1 // long[] a
        end local 0 // org.h2.value.Value v
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     v  Lorg/h2/value/Value;
            1    4     1     a  [J
    MethodParameters:
      Name  Flags
      v     

  public void <init>(org.h2.expression.IntervalOperation$IntervalOpType, org.h2.expression.Expression, org.h2.expression.Expression);
    descriptor: (Lorg/h2/expression/IntervalOperation$IntervalOpType;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.expression.IntervalOperation$IntervalOpType opType
        start local 2 // org.h2.expression.Expression left
        start local 3 // org.h2.expression.Expression right
         0: .line 89
            aload 0 /* this */
            invokespecial org.h2.expression.Expression.<init>:()V
         1: .line 90
            aload 0 /* this */
            aload 1 /* opType */
            putfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
         2: .line 91
            aload 0 /* this */
            aload 2 /* left */
            putfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
         3: .line 92
            aload 0 /* this */
            aload 3 /* right */
            putfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
         4: .line 93
            aload 2 /* left */
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            istore 4 /* l */
        start local 4 // int l
         5: aload 3 /* right */
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            istore 5 /* r */
        start local 5 // int r
         6: .line 94
            invokestatic org.h2.expression.IntervalOperation.$SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType:()[I
            aload 1 /* opType */
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iaload
            tableswitch { // 1 - 7
                    1: 7
                    2: 7
                    3: 9
                    4: 9
                    5: 9
                    6: 9
                    7: 11
              default: 18
          }
         7: .line 97
      StackMap locals: org.h2.expression.IntervalOperation org.h2.expression.IntervalOperation$IntervalOpType org.h2.expression.Expression org.h2.expression.Expression int int
      StackMap stack:
            aload 0 /* this */
            iload 4 /* l */
            iload 5 /* r */
            invokestatic org.h2.value.Value.getHigherOrder:(II)I
            invokestatic org.h2.value.TypeInfo.getTypeInfo:(I)Lorg/h2/value/TypeInfo;
            putfield org.h2.expression.IntervalOperation.type:Lorg/h2/value/TypeInfo;
         8: .line 98
            goto 18
         9: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* left */
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            putfield org.h2.expression.IntervalOperation.type:Lorg/h2/value/TypeInfo;
        10: .line 104
            goto 18
        11: .line 106
      StackMap locals:
      StackMap stack:
            iload 4 /* l */
            bipush 9
            if_icmpne 14
            iload 5 /* r */
            bipush 9
            if_icmpne 14
        12: .line 107
            aload 0 /* this */
            getstatic org.h2.value.TypeInfo.TYPE_INTERVAL_HOUR_TO_SECOND:Lorg/h2/value/TypeInfo;
            putfield org.h2.expression.IntervalOperation.type:Lorg/h2/value/TypeInfo;
        13: .line 108
            goto 18
      StackMap locals:
      StackMap stack:
        14: iload 4 /* l */
            bipush 10
            if_icmpne 17
            iload 5 /* r */
            bipush 10
            if_icmpne 17
        15: .line 109
            aload 0 /* this */
            getstatic org.h2.value.TypeInfo.TYPE_INTERVAL_DAY:Lorg/h2/value/TypeInfo;
            putfield org.h2.expression.IntervalOperation.type:Lorg/h2/value/TypeInfo;
        16: .line 110
            goto 18
        17: .line 111
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.h2.value.TypeInfo.TYPE_INTERVAL_DAY_TO_SECOND:Lorg/h2/value/TypeInfo;
            putfield org.h2.expression.IntervalOperation.type:Lorg/h2/value/TypeInfo;
        18: .line 114
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int r
        end local 4 // int l
        end local 3 // org.h2.expression.Expression right
        end local 2 // org.h2.expression.Expression left
        end local 1 // org.h2.expression.IntervalOperation$IntervalOpType opType
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lorg/h2/expression/IntervalOperation;
            0   19     1  opType  Lorg/h2/expression/IntervalOperation$IntervalOpType;
            0   19     2    left  Lorg/h2/expression/Expression;
            0   19     3   right  Lorg/h2/expression/Expression;
            5   19     4       l  I
            6   19     5       r  I
    MethodParameters:
        Name  Flags
      opType  
      left    
      right   

  public java.lang.StringBuilder getSQL(java.lang.StringBuilder, boolean);
    descriptor: (Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // java.lang.StringBuilder builder
        start local 2 // boolean alwaysQuote
         0: .line 118
            aload 1 /* builder */
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         1: .line 119
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.h2.expression.IntervalOperation.getOperationToken:()C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 120
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            areturn
        end local 2 // boolean alwaysQuote
        end local 1 // java.lang.StringBuilder builder
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/h2/expression/IntervalOperation;
            0    3     1      builder  Ljava/lang/StringBuilder;
            0    3     2  alwaysQuote  Z
    MethodParameters:
             Name  Flags
      builder      
      alwaysQuote  

  private char getOperationToken();
    descriptor: ()C
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.expression.IntervalOperation this
         0: .line 124
            invokestatic org.h2.expression.IntervalOperation.$SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType:()[I
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iaload
            tableswitch { // 1 - 7
                    1: 1
                    2: 2
                    3: 1
                    4: 2
                    5: 3
                    6: 4
                    7: 2
              default: 5
          }
         1: .line 127
      StackMap locals:
      StackMap stack:
            bipush 43
            ireturn
         2: .line 131
      StackMap locals:
      StackMap stack:
            bipush 45
            ireturn
         3: .line 133
      StackMap locals:
      StackMap stack:
            bipush 42
            ireturn
         4: .line 135
      StackMap locals:
      StackMap stack:
            bipush 47
            ireturn
         5: .line 137
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "opType="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)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 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/h2/expression/IntervalOperation;

  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=8, locals=9, args_size=2
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.engine.Session session
         0: .line 143
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            astore 2 /* l */
        start local 2 // org.h2.value.Value l
         1: .line 144
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            astore 3 /* r */
        start local 3 // org.h2.value.Value r
         2: .line 145
            aload 2 /* l */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpeq 3
            aload 3 /* r */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 4
         3: .line 146
      StackMap locals: org.h2.value.Value org.h2.value.Value
      StackMap stack:
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
         4: .line 148
      StackMap locals:
      StackMap stack:
            aload 2 /* l */
            invokevirtual org.h2.value.Value.getValueType:()I
            istore 4 /* lType */
        start local 4 // int lType
         5: aload 3 /* r */
            invokevirtual org.h2.value.Value.getValueType:()I
            istore 5 /* rType */
        start local 5 // int rType
         6: .line 149
            invokestatic org.h2.expression.IntervalOperation.$SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType:()[I
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iaload
            tableswitch { // 1 - 7
                    1: 7
                    2: 7
                    3: 13
                    4: 13
                    5: 14
                    6: 14
                    7: 21
              default: 49
          }
         7: .line 152
      StackMap locals: int int
      StackMap stack:
            aload 2 /* l */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            astore 6 /* a1 */
        start local 6 // java.math.BigInteger a1
         8: .line 153
            aload 3 /* r */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            astore 7 /* a2 */
        start local 7 // java.math.BigInteger a2
         9: .line 155
            iload 4 /* lType */
            iload 5 /* rType */
            invokestatic org.h2.value.Value.getHigherOrder:(II)I
            bipush 26
            isub
            invokestatic org.h2.api.IntervalQualifier.valueOf:(I)Lorg/h2/api/IntervalQualifier;
        10: .line 156
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.INTERVAL_PLUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            if_acmpne 11
            aload 6 /* a1 */
            aload 7 /* a2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            goto 12
      StackMap locals: org.h2.expression.IntervalOperation org.h2.engine.Session org.h2.value.Value org.h2.value.Value int int java.math.BigInteger java.math.BigInteger
      StackMap stack: org.h2.api.IntervalQualifier
        11: aload 6 /* a1 */
            aload 7 /* a2 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
        12: .line 154
      StackMap locals: org.h2.expression.IntervalOperation org.h2.engine.Session org.h2.value.Value org.h2.value.Value int int java.math.BigInteger java.math.BigInteger
      StackMap stack: org.h2.api.IntervalQualifier java.math.BigInteger
            invokestatic org.h2.util.IntervalUtils.intervalFromAbsolute:(Lorg/h2/api/IntervalQualifier;Ljava/math/BigInteger;)Lorg/h2/value/ValueInterval;
            areturn
        end local 7 // java.math.BigInteger a2
        end local 6 // java.math.BigInteger a1
        13: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* l */
            aload 3 /* r */
            iload 4 /* lType */
            iload 5 /* rType */
            invokevirtual org.h2.expression.IntervalOperation.getDateTimeWithInterval:(Lorg/h2/value/Value;Lorg/h2/value/Value;II)Lorg/h2/value/Value;
            areturn
        14: .line 163
      StackMap locals:
      StackMap stack:
            new java.math.BigDecimal
            dup
            aload 2 /* l */
            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
            astore 6 /* a1 */
        start local 6 // java.math.BigDecimal a1
        15: .line 164
            aload 3 /* r */
            invokevirtual org.h2.value.Value.getBigDecimal:()Ljava/math/BigDecimal;
            astore 7 /* a2 */
        start local 7 // java.math.BigDecimal a2
        16: .line 165
            iload 4 /* lType */
            bipush 26
            isub
            invokestatic org.h2.api.IntervalQualifier.valueOf:(I)Lorg/h2/api/IntervalQualifier;
        17: .line 166
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.INTERVAL_MULTIPLY_NUMERIC:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            if_acmpne 18
            aload 6 /* a1 */
            aload 7 /* a2 */
            invokevirtual java.math.BigDecimal.multiply:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
            goto 19
      StackMap locals: org.h2.expression.IntervalOperation org.h2.engine.Session org.h2.value.Value org.h2.value.Value int int java.math.BigDecimal java.math.BigDecimal
      StackMap stack: org.h2.api.IntervalQualifier
        18: aload 6 /* a1 */
            aload 7 /* a2 */
            invokevirtual java.math.BigDecimal.divide:(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
        19: .line 167
      StackMap locals: org.h2.expression.IntervalOperation org.h2.engine.Session org.h2.value.Value org.h2.value.Value int int java.math.BigDecimal java.math.BigDecimal
      StackMap stack: org.h2.api.IntervalQualifier java.math.BigDecimal
            invokevirtual java.math.BigDecimal.toBigInteger:()Ljava/math/BigInteger;
        20: .line 165
            invokestatic org.h2.util.IntervalUtils.intervalFromAbsolute:(Lorg/h2/api/IntervalQualifier;Ljava/math/BigInteger;)Lorg/h2/value/ValueInterval;
            areturn
        end local 7 // java.math.BigDecimal a2
        end local 6 // java.math.BigDecimal a1
        21: .line 170
      StackMap locals:
      StackMap stack:
            iload 4 /* lType */
            bipush 9
            if_icmpne 31
            iload 5 /* rType */
            bipush 9
            if_icmpne 31
        22: .line 171
            aload 2 /* l */
            checkcast org.h2.value.ValueTime
            invokevirtual org.h2.value.ValueTime.getNanos:()J
            aload 3 /* r */
            checkcast org.h2.value.ValueTime
            invokevirtual org.h2.value.ValueTime.getNanos:()J
            lsub
            lstore 6 /* diff */
        start local 6 // long diff
        23: .line 172
            lload 6 /* diff */
            lconst_0
            lcmp
            ifge 24
            iconst_1
            goto 25
      StackMap locals: long
      StackMap stack:
        24: iconst_0
      StackMap locals:
      StackMap stack: int
        25: istore 8 /* negative */
        start local 8 // boolean negative
        26: .line 173
            iload 8 /* negative */
            ifeq 28
        27: .line 174
            lload 6 /* diff */
            lneg
            lstore 6 /* diff */
        28: .line 176
      StackMap locals: int
      StackMap stack:
            getstatic org.h2.api.IntervalQualifier.HOUR_TO_SECOND:Lorg/h2/api/IntervalQualifier;
            iload 8 /* negative */
            lload 6 /* diff */
            ldc 3600000000000
            ldiv
        29: .line 177
            lload 6 /* diff */
            ldc 3600000000000
            lrem
        30: .line 176
            invokestatic org.h2.value.ValueInterval.from:(Lorg/h2/api/IntervalQualifier;ZJJ)Lorg/h2/value/ValueInterval;
            areturn
        end local 8 // boolean negative
        end local 6 // long diff
        31: .line 178
      StackMap locals:
      StackMap stack:
            iload 4 /* lType */
            bipush 10
            if_icmpne 41
            iload 5 /* rType */
            bipush 10
            if_icmpne 41
        32: .line 179
            aload 2 /* l */
            checkcast org.h2.value.ValueDate
            invokevirtual org.h2.value.ValueDate.getDateValue:()J
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
        33: .line 180
            aload 3 /* r */
            checkcast org.h2.value.ValueDate
            invokevirtual org.h2.value.ValueDate.getDateValue:()J
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
        34: .line 179
            lsub
            lstore 6 /* diff */
        start local 6 // long diff
        35: .line 181
            lload 6 /* diff */
            lconst_0
            lcmp
            ifge 36
            iconst_1
            goto 37
      StackMap locals: long
      StackMap stack:
        36: iconst_0
      StackMap locals:
      StackMap stack: int
        37: istore 8 /* negative */
        start local 8 // boolean negative
        38: .line 182
            iload 8 /* negative */
            ifeq 40
        39: .line 183
            lload 6 /* diff */
            lneg
            lstore 6 /* diff */
        40: .line 185
      StackMap locals: int
      StackMap stack:
            getstatic org.h2.api.IntervalQualifier.DAY:Lorg/h2/api/IntervalQualifier;
            iload 8 /* negative */
            lload 6 /* diff */
            lconst_0
            invokestatic org.h2.value.ValueInterval.from:(Lorg/h2/api/IntervalQualifier;ZJJ)Lorg/h2/value/ValueInterval;
            areturn
        end local 8 // boolean negative
        end local 6 // long diff
        41: .line 187
      StackMap locals:
      StackMap stack:
            aload 2 /* l */
            invokestatic org.h2.expression.IntervalOperation.nanosFromValue:(Lorg/h2/value/Value;)Ljava/math/BigInteger;
            aload 3 /* r */
            invokestatic org.h2.expression.IntervalOperation.nanosFromValue:(Lorg/h2/value/Value;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 6 /* diff */
        start local 6 // java.math.BigInteger diff
        42: .line 188
            iload 4 /* lType */
            bipush 24
            if_icmpeq 43
            iload 5 /* rType */
            bipush 24
            if_icmpne 48
        43: .line 189
      StackMap locals: java.math.BigInteger
      StackMap stack:
            aload 2 /* l */
            bipush 24
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            astore 2 /* l */
        44: .line 190
            aload 3 /* r */
            bipush 24
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            astore 3 /* r */
        45: .line 191
            aload 6 /* diff */
            aload 3 /* r */
            checkcast org.h2.value.ValueTimestampTimeZone
            invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeZoneOffsetMins:()S
        46: .line 192
            aload 2 /* l */
            checkcast org.h2.value.ValueTimestampTimeZone
            invokevirtual org.h2.value.ValueTimestampTimeZone.getTimeZoneOffsetMins:()S
            isub
            i2l
            ldc 60000000000
            lmul
        47: .line 191
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 6 /* diff */
        48: .line 194
      StackMap locals:
      StackMap stack:
            getstatic org.h2.api.IntervalQualifier.DAY_TO_SECOND:Lorg/h2/api/IntervalQualifier;
            aload 6 /* diff */
            invokestatic org.h2.util.IntervalUtils.intervalFromAbsolute:(Lorg/h2/api/IntervalQualifier;Ljava/math/BigInteger;)Lorg/h2/value/ValueInterval;
            areturn
        end local 6 // java.math.BigInteger diff
        49: .line 197
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)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 5 // int rType
        end local 4 // int lType
        end local 3 // org.h2.value.Value r
        end local 2 // org.h2.value.Value l
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   50     0      this  Lorg/h2/expression/IntervalOperation;
            0   50     1   session  Lorg/h2/engine/Session;
            1   50     2         l  Lorg/h2/value/Value;
            2   50     3         r  Lorg/h2/value/Value;
            5   50     4     lType  I
            6   50     5     rType  I
            8   13     6        a1  Ljava/math/BigInteger;
            9   13     7        a2  Ljava/math/BigInteger;
           15   21     6        a1  Ljava/math/BigDecimal;
           16   21     7        a2  Ljava/math/BigDecimal;
           23   31     6      diff  J
           26   31     8  negative  Z
           35   41     6      diff  J
           38   41     8  negative  Z
           42   49     6      diff  Ljava/math/BigInteger;
    MethodParameters:
         Name  Flags
      session  

  private org.h2.value.Value getDateTimeWithInterval(org.h2.value.Value, org.h2.value.Value, int, int);
    descriptor: (Lorg/h2/value/Value;Lorg/h2/value/Value;II)Lorg/h2/value/Value;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=5
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.value.Value l
        start local 2 // org.h2.value.Value r
        start local 3 // int lType
        start local 4 // int rType
         0: .line 201
            iload 3 /* lType */
            lookupswitch { // 4
                    9: 1
                   10: 11
                   11: 11
                   24: 11
              default: 42
          }
         1: .line 203
      StackMap locals:
      StackMap stack:
            iload 4 /* rType */
            invokestatic org.h2.value.DataType.isYearMonthIntervalType:(I)Z
            ifeq 3
         2: .line 204
            new java.lang.StringBuilder
            dup
            ldc "type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* rType */
            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
         3: .line 206
      StackMap locals:
      StackMap stack:
            aload 1 /* l */
            checkcast org.h2.value.ValueTime
            invokevirtual org.h2.value.ValueTime.getNanos:()J
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            astore 5 /* a1 */
        start local 5 // java.math.BigInteger a1
         4: .line 207
            aload 2 /* r */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            astore 6 /* a2 */
        start local 6 // java.math.BigInteger a2
         5: .line 208
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_PLUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            if_acmpne 6
            aload 5 /* a1 */
            aload 6 /* a2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            goto 7
      StackMap locals: java.math.BigInteger java.math.BigInteger
      StackMap stack:
         6: aload 5 /* a1 */
            aload 6 /* a2 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
         7: astore 7 /* n */
        start local 7 // java.math.BigInteger n
         8: .line 209
            aload 7 /* n */
            invokevirtual java.math.BigInteger.signum:()I
            iflt 9
            aload 7 /* n */
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
            iflt 10
         9: .line 210
      StackMap locals: java.math.BigInteger
      StackMap stack:
            sipush 22003
            aload 7 /* n */
            invokevirtual java.math.BigInteger.toString:()Ljava/lang/String;
            invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
            athrow
        10: .line 212
      StackMap locals:
      StackMap stack:
            aload 7 /* n */
            invokevirtual java.math.BigInteger.longValue:()J
            invokestatic org.h2.value.ValueTime.fromNanos:(J)Lorg/h2/value/ValueTime;
            areturn
        end local 7 // java.math.BigInteger n
        end local 6 // java.math.BigInteger a2
        end local 5 // java.math.BigInteger a1
        11: .line 217
      StackMap locals:
      StackMap stack:
            iload 4 /* rType */
            invokestatic org.h2.value.DataType.isYearMonthIntervalType:(I)Z
            ifeq 16
        12: .line 218
            aload 2 /* r */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.longValue:()J
            lstore 5 /* m */
        start local 5 // long m
        13: .line 219
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_MINUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            if_acmpne 15
        14: .line 220
            lload 5 /* m */
            lneg
            lstore 5 /* m */
        15: .line 222
      StackMap locals: long
      StackMap stack:
            ldc "MONTH"
            lload 5 /* m */
            aload 1 /* l */
            invokestatic org.h2.expression.function.DateTimeFunctions.dateadd:(Ljava/lang/String;JLorg/h2/value/Value;)Lorg/h2/value/Value;
            areturn
        end local 5 // long m
        16: .line 224
      StackMap locals:
      StackMap stack:
            aload 2 /* r */
            checkcast org.h2.value.ValueInterval
            invokestatic org.h2.util.IntervalUtils.intervalToAbsolute:(Lorg/h2/value/ValueInterval;)Ljava/math/BigInteger;
            astore 5 /* a2 */
        start local 5 // java.math.BigInteger a2
        17: .line 225
            iload 3 /* lType */
            bipush 10
            if_icmpne 24
        18: .line 226
            aload 1 /* l */
            checkcast org.h2.value.ValueDate
            invokevirtual org.h2.value.ValueDate.getDateValue:()J
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
            invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
            astore 6 /* a1 */
        start local 6 // java.math.BigInteger a1
        19: .line 227
            aload 5 /* a2 */
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.divide:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 5 /* a2 */
        20: .line 228
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_PLUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            if_acmpne 21
            aload 6 /* a1 */
            aload 5 /* a2 */
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            goto 22
      StackMap locals: java.math.BigInteger java.math.BigInteger
      StackMap stack:
        21: aload 6 /* a1 */
            aload 5 /* a2 */
            invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
      StackMap locals:
      StackMap stack: java.math.BigInteger
        22: astore 7 /* n */
        start local 7 // java.math.BigInteger n
        23: .line 229
            aload 7 /* n */
            invokevirtual java.math.BigInteger.longValue:()J
            invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
            invokestatic org.h2.value.ValueDate.fromDateValue:(J)Lorg/h2/value/ValueDate;
            areturn
        end local 7 // java.math.BigInteger n
        end local 6 // java.math.BigInteger a1
        24: .line 231
      StackMap locals:
      StackMap stack:
            aload 1 /* l */
            invokestatic org.h2.util.DateTimeUtils.dateAndTimeFromValue:(Lorg/h2/value/Value;)[J
            astore 6 /* a */
        start local 6 // long[] a
        25: .line 232
            aload 6 /* a */
            iconst_0
            laload
            invokestatic org.h2.util.DateTimeUtils.absoluteDayFromDateValue:(J)J
            lstore 7 /* absoluteDay */
        start local 7 // long absoluteDay
        26: .line 233
            aload 6 /* a */
            iconst_1
            laload
            lstore 9 /* timeNanos */
        start local 9 // long timeNanos
        27: .line 234
            aload 5 /* a2 */
            getstatic org.h2.util.IntervalUtils.NANOS_PER_DAY_BI:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.divideAndRemainder:(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
            astore 11 /* dr */
        start local 11 // java.math.BigInteger[] dr
        28: .line 235
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_PLUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            if_acmpne 32
        29: .line 236
            lload 7 /* absoluteDay */
            aload 11 /* dr */
            iconst_0
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            ladd
            lstore 7 /* absoluteDay */
        30: .line 237
            lload 9 /* timeNanos */
            aload 11 /* dr */
            iconst_1
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            ladd
            lstore 9 /* timeNanos */
        31: .line 238
            goto 34
        32: .line 239
      StackMap locals: org.h2.expression.IntervalOperation org.h2.value.Value org.h2.value.Value int int java.math.BigInteger long[] long long java.math.BigInteger[]
      StackMap stack:
            lload 7 /* absoluteDay */
            aload 11 /* dr */
            iconst_0
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            lsub
            lstore 7 /* absoluteDay */
        33: .line 240
            lload 9 /* timeNanos */
            aload 11 /* dr */
            iconst_1
            aaload
            invokevirtual java.math.BigInteger.longValue:()J
            lsub
            lstore 9 /* timeNanos */
        34: .line 242
      StackMap locals:
      StackMap stack:
            lload 9 /* timeNanos */
            ldc 86400000000000
            lcmp
            iflt 38
        35: .line 243
            lload 9 /* timeNanos */
            ldc 86400000000000
            lsub
            lstore 9 /* timeNanos */
        36: .line 244
            lload 7 /* absoluteDay */
            lconst_1
            ladd
            lstore 7 /* absoluteDay */
        37: .line 245
            goto 41
      StackMap locals:
      StackMap stack:
        38: lload 9 /* timeNanos */
            lconst_0
            lcmp
            ifge 41
        39: .line 246
            lload 9 /* timeNanos */
            ldc 86400000000000
            ladd
            lstore 9 /* timeNanos */
        40: .line 247
            lload 7 /* absoluteDay */
            lconst_1
            lsub
            lstore 7 /* absoluteDay */
        41: .line 249
      StackMap locals:
      StackMap stack:
            aload 1 /* l */
            lload 7 /* absoluteDay */
            invokestatic org.h2.util.DateTimeUtils.dateValueFromAbsoluteDay:(J)J
            lload 9 /* timeNanos */
            iconst_0
            invokestatic org.h2.util.DateTimeUtils.dateTimeToValue:(Lorg/h2/value/Value;JJZ)Lorg/h2/value/Value;
            areturn
        end local 11 // java.math.BigInteger[] dr
        end local 9 // long timeNanos
        end local 7 // long absoluteDay
        end local 6 // long[] a
        end local 5 // java.math.BigInteger a2
        42: .line 253
      StackMap locals: org.h2.expression.IntervalOperation org.h2.value.Value org.h2.value.Value int int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.opType:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)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 4 // int rType
        end local 3 // int lType
        end local 2 // org.h2.value.Value r
        end local 1 // org.h2.value.Value l
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   43     0         this  Lorg/h2/expression/IntervalOperation;
            0   43     1            l  Lorg/h2/value/Value;
            0   43     2            r  Lorg/h2/value/Value;
            0   43     3        lType  I
            0   43     4        rType  I
            4   11     5           a1  Ljava/math/BigInteger;
            5   11     6           a2  Ljava/math/BigInteger;
            8   11     7            n  Ljava/math/BigInteger;
           13   16     5            m  J
           17   42     5           a2  Ljava/math/BigInteger;
           19   24     6           a1  Ljava/math/BigInteger;
           23   24     7            n  Ljava/math/BigInteger;
           25   42     6            a  [J
           26   42     7  absoluteDay  J
           27   42     9    timeNanos  J
           28   42    11           dr  [Ljava/math/BigInteger;
    MethodParameters:
       Name  Flags
      l      
      r      
      lType  
      rType  

  public void mapColumns(org.h2.table.ColumnResolver, int, int);
    descriptor: (Lorg/h2/table/ColumnResolver;II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.table.ColumnResolver resolver
        start local 2 // int level
        start local 3 // int state
         0: .line 258
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* resolver */
            iload 2 /* level */
            iload 3 /* state */
            invokevirtual org.h2.expression.Expression.mapColumns:(Lorg/h2/table/ColumnResolver;II)V
         1: .line 259
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            ifnull 3
         2: .line 260
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* resolver */
            iload 2 /* level */
            iload 3 /* state */
            invokevirtual org.h2.expression.Expression.mapColumns:(Lorg/h2/table/ColumnResolver;II)V
         3: .line 262
      StackMap locals:
      StackMap stack:
            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.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/h2/expression/IntervalOperation;
            0    4     1  resolver  Lorg/h2/table/ColumnResolver;
            0    4     2     level  I
            0    4     3     state  I
    MethodParameters:
          Name  Flags
      resolver  
      level     
      state     

  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=3, locals=2, args_size=2
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.engine.Session session
         0: .line 266
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.optimize:(Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
            putfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
         1: .line 267
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.optimize:(Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
            putfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
         2: .line 268
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifeq 4
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifeq 4
         3: .line 269
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.expression.IntervalOperation.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            invokestatic org.h2.expression.ValueExpression.get:(Lorg/h2/value/Value;)Lorg/h2/expression/ValueExpression;
            areturn
         4: .line 271
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/h2/expression/IntervalOperation;
            0    5     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  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.IntervalOperation this
        start local 1 // org.h2.table.TableFilter tableFilter
        start local 2 // boolean b
         0: .line 276
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* tableFilter */
            iload 2 /* b */
            invokevirtual org.h2.expression.Expression.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         1: .line 277
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* tableFilter */
            iload 2 /* b */
            invokevirtual org.h2.expression.Expression.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         2: .line 278
            return
        end local 2 // boolean b
        end local 1 // org.h2.table.TableFilter tableFilter
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/h2/expression/IntervalOperation;
            0    3     1  tableFilter  Lorg/h2/table/TableFilter;
            0    3     2            b  Z
    MethodParameters:
             Name  Flags
      tableFilter  
      b            

  public org.h2.value.TypeInfo getType();
    descriptor: ()Lorg/h2/value/TypeInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.expression.IntervalOperation this
         0: .line 282
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.type:Lorg/h2/value/TypeInfo;
            areturn
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/expression/IntervalOperation;

  public void updateAggregate(org.h2.engine.Session, int);
    descriptor: (Lorg/h2/engine/Session;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.engine.Session session
        start local 2 // int stage
         0: .line 287
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* session */
            iload 2 /* stage */
            invokevirtual org.h2.expression.Expression.updateAggregate:(Lorg/h2/engine/Session;I)V
         1: .line 288
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* session */
            iload 2 /* stage */
            invokevirtual org.h2.expression.Expression.updateAggregate:(Lorg/h2/engine/Session;I)V
         2: .line 289
            return
        end local 2 // int stage
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/h2/expression/IntervalOperation;
            0    3     1  session  Lorg/h2/engine/Session;
            0    3     2    stage  I
    MethodParameters:
         Name  Flags
      session  
      stage    

  public boolean isEverything(org.h2.expression.ExpressionVisitor);
    descriptor: (Lorg/h2/expression/ExpressionVisitor;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // org.h2.expression.ExpressionVisitor visitor
         0: .line 293
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            aload 1 /* visitor */
            invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
            ifeq 1
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            aload 1 /* visitor */
            invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.h2.expression.ExpressionVisitor visitor
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/h2/expression/IntervalOperation;
            0    2     1  visitor  Lorg/h2/expression/ExpressionVisitor;
    MethodParameters:
         Name  Flags
      visitor  

  public int getCost();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.expression.IntervalOperation this
         0: .line 298
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getCost:()I
            iconst_1
            iadd
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getCost:()I
            iadd
            ireturn
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/expression/IntervalOperation;

  public int getSubexpressionCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.expression.IntervalOperation this
         0: .line 303
            iconst_2
            ireturn
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/expression/IntervalOperation;

  public org.h2.expression.Expression getSubexpression(int);
    descriptor: (I)Lorg/h2/expression/Expression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.expression.IntervalOperation this
        start local 1 // int index
         0: .line 308
            iload 1 /* index */
            tableswitch { // 0 - 1
                    0: 1
                    1: 2
              default: 3
          }
         1: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.left:Lorg/h2/expression/Expression;
            areturn
         2: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.IntervalOperation.right:Lorg/h2/expression/Expression;
            areturn
         3: .line 314
      StackMap locals:
      StackMap stack:
            new java.lang.IndexOutOfBoundsException
            dup
            invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
            athrow
        end local 1 // int index
        end local 0 // org.h2.expression.IntervalOperation this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/h2/expression/IntervalOperation;
            0    4     1  index  I
    MethodParameters:
       Name  Flags
      index  

  static int[] $SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 40
            getstatic org.h2.expression.IntervalOperation.$SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.h2.expression.IntervalOperation$IntervalOpType.values:()[Lorg/h2/expression/IntervalOperation$IntervalOpType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_MINUS_DATETIME:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            bipush 7
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_MINUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iconst_4
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.DATETIME_PLUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.INTERVAL_DIVIDE_NUMERIC:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            bipush 6
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.INTERVAL_MINUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iconst_2
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.INTERVAL_MULTIPLY_NUMERIC:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iconst_5
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic org.h2.expression.IntervalOperation$IntervalOpType.INTERVAL_PLUS_INTERVAL:Lorg/h2/expression/IntervalOperation$IntervalOpType;
            invokevirtual org.h2.expression.IntervalOperation$IntervalOpType.ordinal:()I
            iconst_1
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            dup
            putstatic org.h2.expression.IntervalOperation.$SWITCH_TABLE$org$h2$expression$IntervalOperation$IntervalOpType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
}
SourceFile: "IntervalOperation.java"
NestMembers:
  org.h2.expression.IntervalOperation$IntervalOpType
InnerClasses:
  public final IntervalOpType = org.h2.expression.IntervalOperation$IntervalOpType of org.h2.expression.IntervalOperation