public class org.h2.expression.condition.Comparison extends org.h2.expression.condition.Condition
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.expression.condition.Comparison
  super_class: org.h2.expression.condition.Condition
{
  public static final int NULL_SAFE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  private final org.h2.engine.Database database;
    descriptor: Lorg/h2/engine/Database;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  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

  public void <init>(org.h2.engine.Session, int, org.h2.expression.Expression, org.h2.expression.Expression);
    descriptor: (Lorg/h2/engine/Session;ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.engine.Session session
        start local 2 // int compareType
        start local 3 // org.h2.expression.Expression left
        start local 4 // org.h2.expression.Expression right
         0: .line 125
            aload 0 /* this */
            invokespecial org.h2.expression.condition.Condition.<init>:()V
         1: .line 127
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            putfield org.h2.expression.condition.Comparison.database:Lorg/h2/engine/Database;
         2: .line 128
            aload 0 /* this */
            aload 3 /* left */
            putfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
         3: .line 129
            aload 0 /* this */
            aload 4 /* right */
            putfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
         4: .line 130
            aload 0 /* this */
            iload 2 /* compareType */
            putfield org.h2.expression.condition.Comparison.compareType:I
         5: .line 131
            return
        end local 4 // org.h2.expression.Expression right
        end local 3 // org.h2.expression.Expression left
        end local 2 // int compareType
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/h2/expression/condition/Comparison;
            0    6     1      session  Lorg/h2/engine/Session;
            0    6     2  compareType  I
            0    6     3         left  Lorg/h2/expression/Expression;
            0    6     4        right  Lorg/h2/expression/Expression;
    MethodParameters:
             Name  Flags
      session      
      compareType  
      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=4, args_size=3
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // java.lang.StringBuilder builder
        start local 2 // boolean alwaysQuote
         0: .line 135
            iconst_0
            istore 3 /* encloseRight */
        start local 3 // boolean encloseRight
         1: .line 136
            aload 1 /* builder */
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 137
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            tableswitch { // 0 - 11
                    0: 11
                    1: 11
                    2: 11
                    3: 11
                    4: 11
                    5: 11
                    6: 3
                    7: 5
                    8: 13
                    9: 13
                   10: 13
                   11: 7
              default: 13
          }
         3: .line 139
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            ldc " IS NULL"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 140
            goto 19
         5: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            ldc " IS NOT NULL"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 143
            goto 19
         7: .line 145
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            ldc "INTERSECTS("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 146
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 147
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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;
            pop
        10: .line 148
            goto 19
        11: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.aggregate.Aggregate
            ifeq 13
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            checkcast org.h2.expression.aggregate.Aggregate
            invokevirtual org.h2.expression.aggregate.Aggregate.getAggregateType:()Lorg/h2/expression/aggregate/AggregateType;
            getstatic org.h2.expression.aggregate.AggregateType.ANY:Lorg/h2/expression/aggregate/AggregateType;
            if_acmpne 13
        12: .line 156
            iconst_1
            istore 3 /* encloseRight */
        13: .line 160
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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 */
            getfield org.h2.expression.condition.Comparison.compareType:I
            invokestatic org.h2.expression.condition.Comparison.getCompareOperator:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        14: .line 161
            iload 3 /* encloseRight */
            ifeq 16
        15: .line 162
            aload 1 /* builder */
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        16: .line 164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 2 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            pop
        17: .line 165
            iload 3 /* encloseRight */
            ifeq 19
        18: .line 166
            aload 1 /* builder */
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        19: .line 169
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            areturn
        end local 3 // boolean encloseRight
        end local 2 // boolean alwaysQuote
        end local 1 // java.lang.StringBuilder builder
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   20     0          this  Lorg/h2/expression/condition/Comparison;
            0   20     1       builder  Ljava/lang/StringBuilder;
            0   20     2   alwaysQuote  Z
            1   20     3  encloseRight  Z
    MethodParameters:
             Name  Flags
      builder      
      alwaysQuote  

  static java.lang.String getCompareOperator(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int compareType
         0: .line 179
            iload 0 /* compareType */
            tableswitch { // 0 - 21
                    0: 1
                    1: 3
                    2: 4
                    3: 5
                    4: 6
                    5: 7
                    6: 10
                    7: 10
                    8: 10
                    9: 10
                   10: 10
                   11: 9
                   12: 10
                   13: 10
                   14: 10
                   15: 10
                   16: 2
                   17: 10
                   18: 10
                   19: 10
                   20: 10
                   21: 8
              default: 10
          }
         1: .line 181
      StackMap locals:
      StackMap stack:
            ldc "="
            areturn
         2: .line 183
      StackMap locals:
      StackMap stack:
            ldc "IS"
            areturn
         3: .line 185
      StackMap locals:
      StackMap stack:
            ldc ">="
            areturn
         4: .line 187
      StackMap locals:
      StackMap stack:
            ldc ">"
            areturn
         5: .line 189
      StackMap locals:
      StackMap stack:
            ldc "<="
            areturn
         6: .line 191
      StackMap locals:
      StackMap stack:
            ldc "<"
            areturn
         7: .line 193
      StackMap locals:
      StackMap stack:
            ldc "<>"
            areturn
         8: .line 195
      StackMap locals:
      StackMap stack:
            ldc "IS NOT"
            areturn
         9: .line 197
      StackMap locals:
      StackMap stack:
            ldc "&&"
            areturn
        10: .line 199
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "compareType="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* compareType */
            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 0 // int compareType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0  compareType  I
    MethodParameters:
             Name  Flags
      compareType  

  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=5, locals=8, args_size=2
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.engine.Session session
         0: .line 205
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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.condition.Comparison.left:Lorg/h2/expression/Expression;
         1: .line 206
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnull 30
         2: .line 207
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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.condition.Comparison.right:Lorg/h2/expression/Expression;
         3: .line 209
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            bipush 17
            if_icmpne 5
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            bipush 17
            if_icmpeq 5
         4: .line 210
            ldc 90110
            invokestatic org.h2.message.DbException.get:(I)Lorg/h2/message/DbException;
            athrow
         5: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.ExpressionColumn
            ifeq 11
         6: .line 213
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifne 7
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.Parameter
            ifeq 11
         7: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            astore 2 /* temp */
        start local 2 // org.h2.expression.Expression temp
         8: .line 215
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            putfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
         9: .line 216
            aload 0 /* this */
            aload 2 /* temp */
            putfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
        10: .line 217
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            invokevirtual org.h2.expression.condition.Comparison.getReversedCompareType:(I)I
            putfield org.h2.expression.condition.Comparison.compareType:I
        end local 2 // org.h2.expression.Expression temp
        11: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.ExpressionColumn
            ifeq 30
        12: .line 221
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifeq 26
        13: .line 222
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            astore 2 /* r */
        start local 2 // org.h2.value.Value r
        14: .line 223
            aload 2 /* r */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 17
        15: .line 224
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 16
            iand
            ifne 17
        16: .line 225
            invokestatic org.h2.expression.ValueExpression.getNull:()Lorg/h2/expression/ValueExpression;
            areturn
        17: .line 228
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            astore 3 /* colType */
        start local 3 // org.h2.value.TypeInfo colType
        18: aload 2 /* r */
            invokevirtual org.h2.value.Value.getType:()Lorg/h2/value/TypeInfo;
            astore 4 /* constType */
        start local 4 // org.h2.value.TypeInfo constType
        19: .line 229
            aload 4 /* constType */
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            istore 5 /* constValueType */
        start local 5 // int constValueType
        20: .line 230
            iload 5 /* constValueType */
            aload 3 /* colType */
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            if_icmpeq 30
        21: .line 231
            aload 3 /* colType */
            aload 4 /* constType */
            invokestatic org.h2.value.Value.getHigherType:(Lorg/h2/value/TypeInfo;Lorg/h2/value/TypeInfo;)Lorg/h2/value/TypeInfo;
            astore 6 /* resType */
        start local 6 // org.h2.value.TypeInfo resType
        22: .line 235
            iload 5 /* constValueType */
            aload 6 /* resType */
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            if_icmpeq 30
        23: .line 236
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            checkcast org.h2.expression.ExpressionColumn
            invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
            astore 7 /* column */
        start local 7 // org.h2.table.Column column
        24: .line 237
            aload 0 /* this */
            aload 2 /* r */
            aload 6 /* resType */
            aload 1 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.getMode:()Lorg/h2/engine/Mode;
            aload 7 /* column */
            invokevirtual org.h2.value.Value.convertTo:(Lorg/h2/value/TypeInfo;Lorg/h2/engine/Mode;Ljava/lang/Object;)Lorg/h2/value/Value;
            invokestatic org.h2.expression.ValueExpression.get:(Lorg/h2/value/Value;)Lorg/h2/expression/ValueExpression;
            putfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
        end local 7 // org.h2.table.Column column
        end local 6 // org.h2.value.TypeInfo resType
        end local 5 // int constValueType
        end local 4 // org.h2.value.TypeInfo constType
        end local 3 // org.h2.value.TypeInfo colType
        end local 2 // org.h2.value.Value r
        25: .line 240
            goto 30
      StackMap locals:
      StackMap stack:
        26: aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.Parameter
            ifeq 30
        27: .line 241
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            checkcast org.h2.expression.Parameter
        28: .line 242
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            checkcast org.h2.expression.ExpressionColumn
            invokevirtual org.h2.expression.ExpressionColumn.getColumn:()Lorg/h2/table/Column;
        29: .line 241
            invokevirtual org.h2.expression.Parameter.setColumn:(Lorg/h2/table/Column;)V
        30: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 6
            if_icmpeq 31
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 7
            if_icmpne 33
        31: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifeq 41
        32: .line 248
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.expression.condition.Comparison.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            invokestatic org.h2.expression.ValueExpression.get:(Lorg/h2/value/Value;)Lorg/h2/expression/ValueExpression;
            areturn
        33: .line 251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            ifnull 34
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnonnull 35
        34: .line 252
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            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;
            pop
        35: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokestatic org.h2.expression.ValueExpression.getNull:()Lorg/h2/expression/ValueExpression;
            if_acmpeq 37
        36: .line 255
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokestatic org.h2.expression.ValueExpression.getNull:()Lorg/h2/expression/ValueExpression;
            if_acmpne 39
        37: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 16
            iand
            ifne 39
        38: .line 259
            invokestatic org.h2.expression.ValueExpression.getNull:()Lorg/h2/expression/ValueExpression;
            areturn
        39: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifeq 41
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            ifeq 41
        40: .line 263
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.expression.condition.Comparison.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            invokestatic org.h2.expression.ValueExpression.get:(Lorg/h2/value/Value;)Lorg/h2/expression/ValueExpression;
            areturn
        41: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   42     0            this  Lorg/h2/expression/condition/Comparison;
            0   42     1         session  Lorg/h2/engine/Session;
            8   11     2            temp  Lorg/h2/expression/Expression;
           14   25     2               r  Lorg/h2/value/Value;
           18   25     3         colType  Lorg/h2/value/TypeInfo;
           19   25     4       constType  Lorg/h2/value/TypeInfo;
           20   25     5  constValueType  I
           22   25     6         resType  Lorg/h2/value/TypeInfo;
           24   25     7          column  Lorg/h2/table/Column;
    MethodParameters:
         Name  Flags
      session  

  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=4, locals=4, args_size=2
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.engine.Session session
         0: .line 271
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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 272
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnonnull 13
         2: .line 274
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            tableswitch { // 6 - 7
                    6: 3
                    7: 7
              default: 11
          }
         3: .line 276
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 2 /* l */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 3 /* result */
        start local 3 // boolean result
         6: .line 277
            goto 12
        end local 3 // boolean result
         7: .line 279
      StackMap locals:
      StackMap stack:
            aload 2 /* l */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpeq 8
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: istore 3 /* result */
        start local 3 // boolean result
        10: .line 280
            goto 12
        end local 3 // boolean result
        11: .line 282
      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.condition.Comparison.compareType: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
        start local 3 // boolean result
        12: .line 284
      StackMap locals: int
      StackMap stack:
            iload 3 /* result */
            invokestatic org.h2.value.ValueBoolean.get:(Z)Lorg/h2/value/ValueBoolean;
            areturn
        end local 3 // boolean result
        13: .line 287
      StackMap locals:
      StackMap stack:
            aload 2 /* l */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 15
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 16
            iand
            ifne 15
        14: .line 288
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
        15: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.database:Lorg/h2/engine/Database;
            aload 2 /* l */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 1 /* session */
            invokevirtual org.h2.expression.Expression.getValue:(Lorg/h2/engine/Session;)Lorg/h2/value/Value;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            invokestatic org.h2.expression.condition.Comparison.compare:(Lorg/h2/engine/Database;Lorg/h2/value/Value;Lorg/h2/value/Value;I)Lorg/h2/value/Value;
            areturn
        end local 2 // org.h2.value.Value l
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lorg/h2/expression/condition/Comparison;
            0   16     1  session  Lorg/h2/engine/Session;
            1   16     2        l  Lorg/h2/value/Value;
            6    7     3   result  Z
           10   11     3   result  Z
           12   13     3   result  Z
    MethodParameters:
         Name  Flags
      session  

  static org.h2.value.Value compare(org.h2.engine.Database, org.h2.value.Value, org.h2.value.Value, int);
    descriptor: (Lorg/h2/engine/Database;Lorg/h2/value/Value;Lorg/h2/value/Value;I)Lorg/h2/value/Value;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // org.h2.engine.Database database
        start local 1 // org.h2.value.Value l
        start local 2 // org.h2.value.Value r
        start local 3 // int compareType
         0: .line 304
            iload 3 /* compareType */
            tableswitch { // 0 - 21
                    0: 1
                    1: 25
                    2: 34
                    3: 43
                    4: 51
                    5: 12
                    6: 66
                    7: 66
                    8: 66
                    9: 66
                   10: 66
                   11: 59
                   12: 66
                   13: 66
                   14: 66
                   15: 66
                   16: 10
                   17: 66
                   18: 66
                   19: 66
                   20: 66
                   21: 21
              default: 66
          }
         1: .line 306
      StackMap locals:
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            iconst_1
            invokevirtual org.h2.engine.Database.compareWithNull:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)I
            istore 5 /* cmp */
        start local 5 // int cmp
         2: .line 307
            iload 5 /* cmp */
            ifne 5
         3: .line 308
            getstatic org.h2.value.ValueBoolean.TRUE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
         4: .line 309
            goto 67
        end local 4 // org.h2.value.Value result
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int top int
      StackMap stack:
         5: iload 5 /* cmp */
            ldc -2147483648
            if_icmpne 8
         6: .line 310
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
         7: .line 311
            goto 67
        end local 4 // org.h2.value.Value result
         8: .line 312
      StackMap locals:
      StackMap stack:
            getstatic org.h2.value.ValueBoolean.FALSE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
         9: .line 314
            goto 67
        end local 5 // int cmp
        end local 4 // org.h2.value.Value result
        10: .line 317
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            invokevirtual org.h2.engine.Database.areEqual:(Lorg/h2/value/Value;Lorg/h2/value/Value;)Z
            invokestatic org.h2.value.ValueBoolean.get:(Z)Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        11: .line 318
            goto 67
        end local 4 // org.h2.value.Value result
        12: .line 320
      StackMap locals:
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            iconst_1
            invokevirtual org.h2.engine.Database.compareWithNull:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)I
            istore 5 /* cmp */
        start local 5 // int cmp
        13: .line 321
            iload 5 /* cmp */
            ifne 16
        14: .line 322
            getstatic org.h2.value.ValueBoolean.FALSE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        15: .line 323
            goto 67
        end local 4 // org.h2.value.Value result
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int top int
      StackMap stack:
        16: iload 5 /* cmp */
            ldc -2147483648
            if_icmpne 19
        17: .line 324
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        18: .line 325
            goto 67
        end local 4 // org.h2.value.Value result
        19: .line 326
      StackMap locals:
      StackMap stack:
            getstatic org.h2.value.ValueBoolean.TRUE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        20: .line 328
            goto 67
        end local 5 // int cmp
        end local 4 // org.h2.value.Value result
        21: .line 331
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            invokevirtual org.h2.engine.Database.areEqual:(Lorg/h2/value/Value;Lorg/h2/value/Value;)Z
            ifeq 22
            iconst_0
            goto 23
      StackMap locals:
      StackMap stack:
        22: iconst_1
      StackMap locals:
      StackMap stack: int
        23: invokestatic org.h2.value.ValueBoolean.get:(Z)Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        24: .line 332
            goto 67
        end local 4 // org.h2.value.Value result
        25: .line 334
      StackMap locals:
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            iconst_0
            invokevirtual org.h2.engine.Database.compareWithNull:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)I
            istore 5 /* cmp */
        start local 5 // int cmp
        26: .line 335
            iload 5 /* cmp */
            iflt 29
        27: .line 336
            getstatic org.h2.value.ValueBoolean.TRUE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        28: .line 337
            goto 67
        end local 4 // org.h2.value.Value result
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int top int
      StackMap stack:
        29: iload 5 /* cmp */
            ldc -2147483648
            if_icmpne 32
        30: .line 338
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        31: .line 339
            goto 67
        end local 4 // org.h2.value.Value result
        32: .line 340
      StackMap locals:
      StackMap stack:
            getstatic org.h2.value.ValueBoolean.FALSE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        33: .line 342
            goto 67
        end local 5 // int cmp
        end local 4 // org.h2.value.Value result
        34: .line 345
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            iconst_0
            invokevirtual org.h2.engine.Database.compareWithNull:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)I
            istore 5 /* cmp */
        start local 5 // int cmp
        35: .line 346
            iload 5 /* cmp */
            ifle 38
        36: .line 347
            getstatic org.h2.value.ValueBoolean.TRUE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        37: .line 348
            goto 67
        end local 4 // org.h2.value.Value result
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int top int
      StackMap stack:
        38: iload 5 /* cmp */
            ldc -2147483648
            if_icmpne 41
        39: .line 349
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        40: .line 350
            goto 67
        end local 4 // org.h2.value.Value result
        41: .line 351
      StackMap locals:
      StackMap stack:
            getstatic org.h2.value.ValueBoolean.FALSE:Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        42: .line 353
            goto 67
        end local 5 // int cmp
        end local 4 // org.h2.value.Value result
        43: .line 356
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            iconst_0
            invokevirtual org.h2.engine.Database.compareWithNull:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)I
            istore 5 /* cmp */
        start local 5 // int cmp
        44: .line 357
            iload 5 /* cmp */
            ldc -2147483648
            if_icmpne 47
        45: .line 358
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        46: .line 359
            goto 67
        end local 4 // org.h2.value.Value result
        47: .line 360
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int top int
      StackMap stack:
            iload 5 /* cmp */
            ifgt 48
            iconst_1
            goto 49
      StackMap locals:
      StackMap stack:
        48: iconst_0
      StackMap locals:
      StackMap stack: int
        49: invokestatic org.h2.value.ValueBoolean.get:(Z)Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        50: .line 362
            goto 67
        end local 5 // int cmp
        end local 4 // org.h2.value.Value result
        51: .line 365
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int
      StackMap stack:
            aload 0 /* database */
            aload 1 /* l */
            aload 2 /* r */
            iconst_0
            invokevirtual org.h2.engine.Database.compareWithNull:(Lorg/h2/value/Value;Lorg/h2/value/Value;Z)I
            istore 5 /* cmp */
        start local 5 // int cmp
        52: .line 366
            iload 5 /* cmp */
            ldc -2147483648
            if_icmpne 55
        53: .line 367
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        54: .line 368
            goto 67
        end local 4 // org.h2.value.Value result
        55: .line 369
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int top int
      StackMap stack:
            iload 5 /* cmp */
            ifge 56
            iconst_1
            goto 57
      StackMap locals:
      StackMap stack:
        56: iconst_0
      StackMap locals:
      StackMap stack: int
        57: invokestatic org.h2.value.ValueBoolean.get:(Z)Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        58: .line 371
            goto 67
        end local 5 // int cmp
        end local 4 // org.h2.value.Value result
        59: .line 374
      StackMap locals: org.h2.engine.Database org.h2.value.Value org.h2.value.Value int
      StackMap stack:
            aload 1 /* l */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpeq 60
            aload 2 /* r */
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            if_acmpne 62
        60: .line 375
      StackMap locals:
      StackMap stack:
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            astore 4 /* result */
        start local 4 // org.h2.value.Value result
        61: .line 376
            goto 67
        end local 4 // org.h2.value.Value result
        62: .line 377
      StackMap locals:
      StackMap stack:
            aload 1 /* l */
            bipush 22
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueGeometry
            astore 5 /* lg */
        start local 5 // org.h2.value.ValueGeometry lg
        63: .line 378
            aload 2 /* r */
            bipush 22
            invokevirtual org.h2.value.Value.convertTo:(I)Lorg/h2/value/Value;
            checkcast org.h2.value.ValueGeometry
            astore 6 /* rg */
        start local 6 // org.h2.value.ValueGeometry rg
        64: .line 379
            aload 5 /* lg */
            aload 6 /* rg */
            invokevirtual org.h2.value.ValueGeometry.intersectsBoundingBox:(Lorg/h2/value/ValueGeometry;)Z
            invokestatic org.h2.value.ValueBoolean.get:(Z)Lorg/h2/value/ValueBoolean;
            astore 4 /* result */
        end local 6 // org.h2.value.ValueGeometry rg
        end local 5 // org.h2.value.ValueGeometry lg
        start local 4 // org.h2.value.Value result
        65: .line 381
            goto 67
        end local 4 // org.h2.value.Value result
        66: .line 384
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "type="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* compareType */
            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
        start local 4 // org.h2.value.Value result
        67: .line 386
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 4 /* result */
            areturn
        end local 4 // org.h2.value.Value result
        end local 3 // int compareType
        end local 2 // org.h2.value.Value r
        end local 1 // org.h2.value.Value l
        end local 0 // org.h2.engine.Database database
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   68     0     database  Lorg/h2/engine/Database;
            0   68     1            l  Lorg/h2/value/Value;
            0   68     2            r  Lorg/h2/value/Value;
            0   68     3  compareType  I
            4    5     4       result  Lorg/h2/value/Value;
            7    8     4       result  Lorg/h2/value/Value;
            9   10     4       result  Lorg/h2/value/Value;
           11   12     4       result  Lorg/h2/value/Value;
           15   16     4       result  Lorg/h2/value/Value;
           18   19     4       result  Lorg/h2/value/Value;
           20   21     4       result  Lorg/h2/value/Value;
           24   25     4       result  Lorg/h2/value/Value;
           28   29     4       result  Lorg/h2/value/Value;
           31   32     4       result  Lorg/h2/value/Value;
           33   34     4       result  Lorg/h2/value/Value;
           37   38     4       result  Lorg/h2/value/Value;
           40   41     4       result  Lorg/h2/value/Value;
           42   43     4       result  Lorg/h2/value/Value;
           46   47     4       result  Lorg/h2/value/Value;
           50   51     4       result  Lorg/h2/value/Value;
           54   55     4       result  Lorg/h2/value/Value;
           58   59     4       result  Lorg/h2/value/Value;
           61   62     4       result  Lorg/h2/value/Value;
           65   66     4       result  Lorg/h2/value/Value;
           67   68     4       result  Lorg/h2/value/Value;
            2   10     5          cmp  I
           13   21     5          cmp  I
           26   34     5          cmp  I
           35   43     5          cmp  I
           44   51     5          cmp  I
           52   59     5          cmp  I
           63   65     5           lg  Lorg/h2/value/ValueGeometry;
           64   65     6           rg  Lorg/h2/value/ValueGeometry;
    MethodParameters:
             Name  Flags
      database     
      l            
      r            
      compareType  

  private int getReversedCompareType(int);
    descriptor: (I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // int type
         0: .line 390
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            tableswitch { // 0 - 21
                    0: 1
                    1: 2
                    2: 3
                    3: 4
                    4: 5
                    5: 1
                    6: 6
                    7: 6
                    8: 6
                    9: 6
                   10: 6
                   11: 1
                   12: 6
                   13: 6
                   14: 6
                   15: 6
                   16: 1
                   17: 6
                   18: 6
                   19: 6
                   20: 6
                   21: 1
              default: 6
          }
         1: .line 396
      StackMap locals:
      StackMap stack:
            iload 1 /* type */
            ireturn
         2: .line 398
      StackMap locals:
      StackMap stack:
            iconst_3
            ireturn
         3: .line 400
      StackMap locals:
      StackMap stack:
            iconst_4
            ireturn
         4: .line 402
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         5: .line 404
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
         6: .line 406
      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.condition.Comparison.compareType: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 // int type
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/h2/expression/condition/Comparison;
            0    7     1  type  I
    MethodParameters:
      Name  Flags
      type  

  public org.h2.expression.Expression getNotIfPossible(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.engine.Session session
         0: .line 412
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 11
            if_icmpne 2
         1: .line 413
            aconst_null
            areturn
         2: .line 415
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.h2.expression.condition.Comparison.getNotCompareType:()I
            istore 2 /* type */
        start local 2 // int type
         3: .line 416
            new org.h2.expression.condition.Comparison
            dup
            aload 1 /* session */
            iload 2 /* type */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokespecial org.h2.expression.condition.Comparison.<init>:(Lorg/h2/engine/Session;ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
            areturn
        end local 2 // int type
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/h2/expression/condition/Comparison;
            0    4     1  session  Lorg/h2/engine/Session;
            3    4     2     type  I
    MethodParameters:
         Name  Flags
      session  

  private int getNotCompareType();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.expression.condition.Comparison this
         0: .line 420
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            tableswitch { // 0 - 21
                    0: 1
                    1: 5
                    2: 6
                    3: 7
                    4: 8
                    5: 3
                    6: 9
                    7: 10
                    8: 11
                    9: 11
                   10: 11
                   11: 11
                   12: 11
                   13: 11
                   14: 11
                   15: 11
                   16: 2
                   17: 11
                   18: 11
                   19: 11
                   20: 11
                   21: 4
              default: 11
          }
         1: .line 422
      StackMap locals:
      StackMap stack:
            iconst_5
            ireturn
         2: .line 424
      StackMap locals:
      StackMap stack:
            bipush 21
            ireturn
         3: .line 426
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 428
      StackMap locals:
      StackMap stack:
            bipush 16
            ireturn
         5: .line 430
      StackMap locals:
      StackMap stack:
            iconst_4
            ireturn
         6: .line 432
      StackMap locals:
      StackMap stack:
            iconst_3
            ireturn
         7: .line 434
      StackMap locals:
      StackMap stack:
            iconst_2
            ireturn
         8: .line 436
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         9: .line 438
      StackMap locals:
      StackMap stack:
            bipush 7
            ireturn
        10: .line 440
      StackMap locals:
      StackMap stack:
            bipush 6
            ireturn
        11: .line 442
      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.condition.Comparison.compareType: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 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/h2/expression/condition/Comparison;

  public void createIndexConditions(org.h2.engine.Session, org.h2.table.TableFilter);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/table/TableFilter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.table.TableFilter filter
         0: .line 448
            aload 2 /* filter */
            invokevirtual org.h2.table.TableFilter.getTable:()Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.isQueryComparable:()Z
            ifne 2
         1: .line 449
            return
         2: .line 451
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* l */
        start local 3 // org.h2.expression.ExpressionColumn l
         3: .line 452
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.ExpressionColumn
            ifeq 7
         4: .line 453
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            checkcast org.h2.expression.ExpressionColumn
            astore 3 /* l */
         5: .line 454
            aload 2 /* filter */
            aload 3 /* l */
            invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
            if_acmpeq 7
         6: .line 455
            aconst_null
            astore 3 /* l */
         7: .line 458
      StackMap locals: org.h2.expression.ExpressionColumn
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnonnull 14
         8: .line 459
            aload 3 /* l */
            ifnull 13
         9: .line 460
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            tableswitch { // 6 - 6
                    6: 10
              default: 13
          }
        10: .line 462
      StackMap locals:
      StackMap stack:
            aload 2 /* filter */
        11: .line 463
            bipush 16
            aload 3 /* l */
            invokestatic org.h2.expression.ValueExpression.getNull:()Lorg/h2/expression/ValueExpression;
            invokestatic org.h2.index.IndexCondition.get:(ILorg/h2/expression/ExpressionColumn;Lorg/h2/expression/Expression;)Lorg/h2/index/IndexCondition;
        12: .line 462
            invokevirtual org.h2.table.TableFilter.addIndexCondition:(Lorg/h2/index/IndexCondition;)V
        13: .line 466
      StackMap locals:
      StackMap stack:
            return
        14: .line 468
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* r */
        start local 4 // org.h2.expression.ExpressionColumn r
        15: .line 469
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            instanceof org.h2.expression.ExpressionColumn
            ifeq 19
        16: .line 470
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            checkcast org.h2.expression.ExpressionColumn
            astore 4 /* r */
        17: .line 471
            aload 2 /* filter */
            aload 4 /* r */
            invokevirtual org.h2.expression.ExpressionColumn.getTableFilter:()Lorg/h2/table/TableFilter;
            if_acmpeq 19
        18: .line 472
            aconst_null
            astore 4 /* r */
        19: .line 476
      StackMap locals: org.h2.expression.ExpressionColumn
      StackMap stack:
            aload 3 /* l */
            ifnonnull 21
            aload 4 /* r */
            ifnonnull 21
        20: .line 477
            return
        21: .line 479
      StackMap locals:
      StackMap stack:
            aload 3 /* l */
            ifnull 23
            aload 4 /* r */
            ifnull 23
        22: .line 480
            return
        23: .line 482
      StackMap locals:
      StackMap stack:
            aload 3 /* l */
            ifnonnull 28
        24: .line 484
            aload 2 /* filter */
            invokestatic org.h2.expression.ExpressionVisitor.getNotFromResolverVisitor:(Lorg/h2/table/ColumnResolver;)Lorg/h2/expression/ExpressionVisitor;
        25: .line 483
            astore 5 /* visitor */
        start local 5 // org.h2.expression.ExpressionVisitor visitor
        26: .line 485
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 5 /* visitor */
            invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
            ifne 34
        27: .line 486
            return
        end local 5 // org.h2.expression.ExpressionVisitor visitor
        28: .line 488
      StackMap locals:
      StackMap stack:
            aload 4 /* r */
            ifnonnull 33
        29: .line 490
            aload 2 /* filter */
            invokestatic org.h2.expression.ExpressionVisitor.getNotFromResolverVisitor:(Lorg/h2/table/ColumnResolver;)Lorg/h2/expression/ExpressionVisitor;
        30: .line 489
            astore 5 /* visitor */
        start local 5 // org.h2.expression.ExpressionVisitor visitor
        31: .line 491
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 5 /* visitor */
            invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
            ifne 34
        32: .line 492
            return
        end local 5 // org.h2.expression.ExpressionVisitor visitor
        33: .line 497
      StackMap locals:
      StackMap stack:
            return
        34: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            tableswitch { // 0 - 21
                    0: 37
                    1: 37
                    2: 37
                    3: 37
                    4: 37
                    5: 35
                    6: 39
                    7: 39
                    8: 39
                    9: 39
                   10: 39
                   11: 37
                   12: 39
                   13: 39
                   14: 39
                   15: 39
                   16: 37
                   17: 39
                   18: 39
                   19: 39
                   20: 39
                   21: 35
              default: 39
          }
        35: .line 503
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* addIndex */
        start local 5 // boolean addIndex
        36: .line 504
            goto 40
        end local 5 // boolean addIndex
        37: .line 512
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 5 /* addIndex */
        start local 5 // boolean addIndex
        38: .line 513
            goto 40
        end local 5 // boolean addIndex
        39: .line 515
      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.condition.Comparison.compareType: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
        start local 5 // boolean addIndex
        40: .line 517
      StackMap locals: int
      StackMap stack:
            iload 5 /* addIndex */
            ifeq 55
        41: .line 518
            aload 3 /* l */
            ifnull 48
        42: .line 519
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            istore 6 /* rType */
        start local 6 // int rType
        43: .line 520
            aload 3 /* l */
            invokevirtual org.h2.expression.ExpressionColumn.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            iload 6 /* rType */
            if_icmpeq 44
            iload 6 /* rType */
            bipush 14
            if_icmpeq 55
        44: .line 521
      StackMap locals: int
      StackMap stack:
            aload 2 /* filter */
        45: .line 522
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            aload 3 /* l */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokestatic org.h2.index.IndexCondition.get:(ILorg/h2/expression/ExpressionColumn;Lorg/h2/expression/Expression;)Lorg/h2/index/IndexCondition;
        46: .line 521
            invokevirtual org.h2.table.TableFilter.addIndexCondition:(Lorg/h2/index/IndexCondition;)V
        end local 6 // int rType
        47: .line 524
            goto 55
      StackMap locals:
      StackMap stack:
        48: aload 4 /* r */
            ifnull 55
        49: .line 525
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            istore 6 /* lType */
        start local 6 // int lType
        50: .line 526
            aload 4 /* r */
            invokevirtual org.h2.expression.ExpressionColumn.getType:()Lorg/h2/value/TypeInfo;
            invokevirtual org.h2.value.TypeInfo.getValueType:()I
            iload 6 /* lType */
            if_icmpeq 51
            iload 6 /* lType */
            bipush 14
            if_icmpeq 55
        51: .line 527
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            invokevirtual org.h2.expression.condition.Comparison.getReversedCompareType:(I)I
            istore 7 /* compareRev */
        start local 7 // int compareRev
        52: .line 528
            aload 2 /* filter */
        53: .line 529
            iload 7 /* compareRev */
            aload 4 /* r */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokestatic org.h2.index.IndexCondition.get:(ILorg/h2/expression/ExpressionColumn;Lorg/h2/expression/Expression;)Lorg/h2/index/IndexCondition;
        54: .line 528
            invokevirtual org.h2.table.TableFilter.addIndexCondition:(Lorg/h2/index/IndexCondition;)V
        end local 7 // int compareRev
        end local 6 // int lType
        55: .line 533
      StackMap locals:
      StackMap stack:
            return
        end local 5 // boolean addIndex
        end local 4 // org.h2.expression.ExpressionColumn r
        end local 3 // org.h2.expression.ExpressionColumn l
        end local 2 // org.h2.table.TableFilter filter
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   56     0        this  Lorg/h2/expression/condition/Comparison;
            0   56     1     session  Lorg/h2/engine/Session;
            0   56     2      filter  Lorg/h2/table/TableFilter;
            3   56     3           l  Lorg/h2/expression/ExpressionColumn;
           15   56     4           r  Lorg/h2/expression/ExpressionColumn;
           26   28     5     visitor  Lorg/h2/expression/ExpressionVisitor;
           31   33     5     visitor  Lorg/h2/expression/ExpressionVisitor;
           36   37     5    addIndex  Z
           38   39     5    addIndex  Z
           40   56     5    addIndex  Z
           43   47     6       rType  I
           50   55     6       lType  I
           52   55     7  compareRev  I
    MethodParameters:
         Name  Flags
      session  
      filter   

  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.condition.Comparison this
        start local 1 // org.h2.table.TableFilter tableFilter
        start local 2 // boolean b
         0: .line 537
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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 538
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnull 3
         2: .line 539
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 1 /* tableFilter */
            iload 2 /* b */
            invokevirtual org.h2.expression.Expression.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         3: .line 541
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean b
        end local 1 // org.h2.table.TableFilter tableFilter
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/h2/expression/condition/Comparison;
            0    4     1  tableFilter  Lorg/h2/table/TableFilter;
            0    4     2            b  Z
    MethodParameters:
             Name  Flags
      tableFilter  
      b            

  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.condition.Comparison this
        start local 1 // org.h2.engine.Session session
        start local 2 // int stage
         0: .line 545
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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 546
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnull 3
         2: .line 547
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 1 /* session */
            iload 2 /* stage */
            invokevirtual org.h2.expression.Expression.updateAggregate:(Lorg/h2/engine/Session;I)V
         3: .line 549
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int stage
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/h2/expression/condition/Comparison;
            0    4     1  session  Lorg/h2/engine/Session;
            0    4     2    stage  I
    MethodParameters:
         Name  Flags
      session  
      stage    

  public void addFilterConditions(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.condition.Comparison this
        start local 1 // org.h2.table.TableFilter filter
        start local 2 // boolean outerJoin
         0: .line 553
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 6
            if_icmpne 2
            iload 2 /* outerJoin */
            ifeq 2
         1: .line 560
            return
         2: .line 562
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* filter */
            iload 2 /* outerJoin */
            invokespecial org.h2.expression.condition.Condition.addFilterConditions:(Lorg/h2/table/TableFilter;Z)V
         3: .line 563
            return
        end local 2 // boolean outerJoin
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/h2/expression/condition/Comparison;
            0    4     1     filter  Lorg/h2/table/TableFilter;
            0    4     2  outerJoin  Z
    MethodParameters:
           Name  Flags
      filter     
      outerJoin  

  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.condition.Comparison this
        start local 1 // org.h2.table.ColumnResolver resolver
        start local 2 // int level
        start local 3 // int state
         0: .line 567
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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 568
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnull 3
         2: .line 569
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.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 571
      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.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/h2/expression/condition/Comparison;
            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 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.condition.Comparison this
        start local 1 // org.h2.expression.ExpressionVisitor visitor
         0: .line 575
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 1 /* visitor */
            invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
            ifeq 3
         1: .line 576
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnull 2
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 1 /* visitor */
            invokevirtual org.h2.expression.Expression.isEverything:(Lorg/h2/expression/ExpressionVisitor;)Z
            ifeq 3
         2: .line 575
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // org.h2.expression.ExpressionVisitor visitor
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/h2/expression/condition/Comparison;
            0    4     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.condition.Comparison this
         0: .line 581
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getCost:()I
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            ifnonnull 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack: int
         1: aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.getCost:()I
      StackMap locals: org.h2.expression.condition.Comparison
      StackMap stack: int int
         2: iadd
            iconst_1
            iadd
            ireturn
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/expression/condition/Comparison;

  org.h2.expression.Expression getIfEquals(org.h2.expression.Expression);
    descriptor: (Lorg/h2/expression/Expression;)Lorg/h2/expression/Expression;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.expression.Expression match
         0: .line 592
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            ifne 6
         1: .line 593
            aload 1 /* match */
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            astore 2 /* sql */
        start local 2 // java.lang.String sql
         2: .line 594
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            aload 2 /* sql */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 595
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            areturn
         4: .line 596
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            aload 2 /* sql */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 597
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            areturn
        end local 2 // java.lang.String sql
         6: .line 600
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // org.h2.expression.Expression match
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/h2/expression/condition/Comparison;
            0    7     1  match  Lorg/h2/expression/Expression;
            2    6     2    sql  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      match  

  org.h2.expression.Expression getAdditional(org.h2.engine.Session, org.h2.expression.condition.Comparison, boolean);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/expression/condition/Comparison;Z)Lorg/h2/expression/Expression;
    flags: (0x0000) 
    Code:
      stack=6, locals=12, args_size=4
        start local 0 // org.h2.expression.condition.Comparison this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.expression.condition.Comparison other
        start local 3 // boolean and
         0: .line 614
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.compareType:I
            if_icmpne 30
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            ifne 30
         1: .line 615
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            istore 4 /* lc */
        start local 4 // boolean lc
         2: .line 616
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            istore 5 /* rc */
        start local 5 // boolean rc
         3: .line 617
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            istore 6 /* l2c */
        start local 6 // boolean l2c
         4: .line 618
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokevirtual org.h2.expression.Expression.isConstant:()Z
            istore 7 /* r2c */
        start local 7 // boolean r2c
         5: .line 619
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            astore 8 /* l */
        start local 8 // java.lang.String l
         6: .line 620
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            astore 9 /* l2 */
        start local 9 // java.lang.String l2
         7: .line 621
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            astore 10 /* r */
        start local 10 // java.lang.String r
         8: .line 622
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            iconst_1
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            astore 11 /* r2 */
        start local 11 // java.lang.String r2
         9: .line 623
            iload 3 /* and */
            ifeq 22
        10: .line 626
            iload 5 /* rc */
            ifeq 11
            iload 7 /* r2c */
            ifne 13
      StackMap locals: org.h2.expression.condition.Comparison org.h2.engine.Session org.h2.expression.condition.Comparison int int int int int java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack:
        11: aload 8 /* l */
            aload 9 /* l2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 627
            new org.h2.expression.condition.Comparison
            dup
            aload 1 /* session */
            iconst_0
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokespecial org.h2.expression.condition.Comparison.<init>:(Lorg/h2/engine/Session;ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
            areturn
        13: .line 628
      StackMap locals:
      StackMap stack:
            iload 5 /* rc */
            ifeq 14
            iload 6 /* l2c */
            ifne 16
      StackMap locals:
      StackMap stack:
        14: aload 8 /* l */
            aload 11 /* r2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        15: .line 629
            new org.h2.expression.condition.Comparison
            dup
            aload 1 /* session */
            iconst_0
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokespecial org.h2.expression.condition.Comparison.<init>:(Lorg/h2/engine/Session;ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
            areturn
        16: .line 630
      StackMap locals:
      StackMap stack:
            iload 4 /* lc */
            ifeq 17
            iload 7 /* r2c */
            ifne 19
      StackMap locals:
      StackMap stack:
        17: aload 10 /* r */
            aload 9 /* l2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        18: .line 631
            new org.h2.expression.condition.Comparison
            dup
            aload 1 /* session */
            iconst_0
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokespecial org.h2.expression.condition.Comparison.<init>:(Lorg/h2/engine/Session;ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
            areturn
        19: .line 632
      StackMap locals:
      StackMap stack:
            iload 4 /* lc */
            ifeq 20
            iload 6 /* l2c */
            ifne 30
      StackMap locals:
      StackMap stack:
        20: aload 10 /* r */
            aload 11 /* r2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 30
        21: .line 633
            new org.h2.expression.condition.Comparison
            dup
            aload 1 /* session */
            iconst_0
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokespecial org.h2.expression.condition.Comparison.<init>:(Lorg/h2/engine/Session;ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
            areturn
        22: .line 637
      StackMap locals:
      StackMap stack:
            iload 5 /* rc */
            ifeq 24
            iload 7 /* r2c */
            ifeq 24
            aload 8 /* l */
            aload 9 /* l2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 24
        23: .line 638
            aload 1 /* session */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokestatic org.h2.expression.condition.Comparison.getConditionIn:(Lorg/h2/engine/Session;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;)Lorg/h2/expression/condition/ConditionIn;
            areturn
        24: .line 639
      StackMap locals:
      StackMap stack:
            iload 5 /* rc */
            ifeq 26
            iload 6 /* l2c */
            ifeq 26
            aload 8 /* l */
            aload 11 /* r2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        25: .line 640
            aload 1 /* session */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokestatic org.h2.expression.condition.Comparison.getConditionIn:(Lorg/h2/engine/Session;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;)Lorg/h2/expression/condition/ConditionIn;
            areturn
        26: .line 641
      StackMap locals:
      StackMap stack:
            iload 4 /* lc */
            ifeq 28
            iload 7 /* r2c */
            ifeq 28
            aload 10 /* r */
            aload 9 /* l2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        27: .line 642
            aload 1 /* session */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            invokestatic org.h2.expression.condition.Comparison.getConditionIn:(Lorg/h2/engine/Session;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;)Lorg/h2/expression/condition/ConditionIn;
            areturn
        28: .line 643
      StackMap locals:
      StackMap stack:
            iload 4 /* lc */
            ifeq 30
            iload 6 /* l2c */
            ifeq 30
            aload 10 /* r */
            aload 11 /* r2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 30
        29: .line 644
            aload 1 /* session */
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            aload 2 /* other */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            invokestatic org.h2.expression.condition.Comparison.getConditionIn:(Lorg/h2/engine/Session;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;)Lorg/h2/expression/condition/ConditionIn;
            areturn
        end local 11 // java.lang.String r2
        end local 10 // java.lang.String r
        end local 9 // java.lang.String l2
        end local 8 // java.lang.String l
        end local 7 // boolean r2c
        end local 6 // boolean l2c
        end local 5 // boolean rc
        end local 4 // boolean lc
        30: .line 648
      StackMap locals: org.h2.expression.condition.Comparison org.h2.engine.Session org.h2.expression.condition.Comparison int
      StackMap stack:
            aconst_null
            areturn
        end local 3 // boolean and
        end local 2 // org.h2.expression.condition.Comparison other
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   31     0     this  Lorg/h2/expression/condition/Comparison;
            0   31     1  session  Lorg/h2/engine/Session;
            0   31     2    other  Lorg/h2/expression/condition/Comparison;
            0   31     3      and  Z
            2   30     4       lc  Z
            3   30     5       rc  Z
            4   30     6      l2c  Z
            5   30     7      r2c  Z
            6   30     8        l  Ljava/lang/String;
            7   30     9       l2  Ljava/lang/String;
            8   30    10        r  Ljava/lang/String;
            9   30    11       r2  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      session  
      other    
      and      

  private static org.h2.expression.condition.ConditionIn getConditionIn(org.h2.engine.Session, org.h2.expression.Expression, org.h2.expression.Expression, org.h2.expression.Expression);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;Lorg/h2/expression/Expression;)Lorg/h2/expression/condition/ConditionIn;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.h2.engine.Session session
        start local 1 // org.h2.expression.Expression left
        start local 2 // org.h2.expression.Expression value1
        start local 3 // org.h2.expression.Expression value2
         0: .line 652
            new java.util.ArrayList
            dup
            iconst_2
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 4 /* right */
        start local 4 // java.util.ArrayList right
         1: .line 653
            aload 4 /* right */
            aload 2 /* value1 */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 654
            aload 4 /* right */
            aload 3 /* value2 */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         3: .line 655
            new org.h2.expression.condition.ConditionIn
            dup
            aload 0 /* session */
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            aload 1 /* left */
            aload 4 /* right */
            invokespecial org.h2.expression.condition.ConditionIn.<init>:(Lorg/h2/engine/Database;Lorg/h2/expression/Expression;Ljava/util/ArrayList;)V
            areturn
        end local 4 // java.util.ArrayList right
        end local 3 // org.h2.expression.Expression value2
        end local 2 // org.h2.expression.Expression value1
        end local 1 // org.h2.expression.Expression left
        end local 0 // org.h2.engine.Session session
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  session  Lorg/h2/engine/Session;
            0    4     1     left  Lorg/h2/expression/Expression;
            0    4     2   value1  Lorg/h2/expression/Expression;
            0    4     3   value2  Lorg/h2/expression/Expression;
            1    4     4    right  Ljava/util/ArrayList<Lorg/h2/expression/Expression;>;
    MethodParameters:
         Name  Flags
      session  
      left     
      value1   
      value2   

  public int getSubexpressionCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.expression.condition.Comparison this
         0: .line 660
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 6
            if_icmpeq 1
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 7
            if_icmpne 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_2
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 0 // org.h2.expression.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/expression/condition/Comparison;

  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.condition.Comparison this
        start local 1 // int index
         0: .line 665
            iload 1 /* index */
            tableswitch { // 0 - 1
                    0: 1
                    1: 2
              default: 4
          }
         1: .line 667
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.left:Lorg/h2/expression/Expression;
            areturn
         2: .line 669
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 6
            if_icmpeq 4
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.compareType:I
            bipush 7
            if_icmpeq 4
         3: .line 670
            aload 0 /* this */
            getfield org.h2.expression.condition.Comparison.right:Lorg/h2/expression/Expression;
            areturn
         4: .line 674
      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.condition.Comparison this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/h2/expression/condition/Comparison;
            0    5     1  index  I
    MethodParameters:
       Name  Flags
      index  

  public org.h2.value.TypeInfo getType();
    descriptor: ()Lorg/h2/value/TypeInfo;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial org.h2.expression.condition.Condition.getType:()Lorg/h2/value/TypeInfo;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "Comparison.java"