public class org.h2.table.TableFilter implements org.h2.table.ColumnResolver
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.h2.table.TableFilter
  super_class: java.lang.Object
{
  private static final int BEFORE_FIRST;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int FOUND;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int AFTER_LAST;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int NULL_ROW;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  protected boolean joinOuterIndirect;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  private org.h2.engine.Session session;
    descriptor: Lorg/h2/engine/Session;
    flags: (0x0002) ACC_PRIVATE

  private final org.h2.table.Table table;
    descriptor: Lorg/h2/table/Table;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.h2.command.dml.Select select;
    descriptor: Lorg/h2/command/dml/Select;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String alias;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

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

  private final org.h2.table.IndexHints indexHints;
    descriptor: Lorg/h2/table/IndexHints;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int[] masks;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

  private final org.h2.index.IndexCursor cursor;
    descriptor: Lorg/h2/index/IndexCursor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.ArrayList<org.h2.index.IndexCondition> indexConditions;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Lorg/h2/index/IndexCondition;>;

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

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

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

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

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

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

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

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

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

  private java.util.ArrayList<org.h2.table.Column> naturalJoinColumns;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/ArrayList<Lorg/h2/table/Column;>;

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

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

  private final int hashCode;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int orderInFrom;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.LinkedHashMap<org.h2.table.Column, java.lang.String> derivedColumnMap;
    descriptor: Ljava/util/LinkedHashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/LinkedHashMap<Lorg/h2/table/Column;Ljava/lang/String;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 42
            ldc Lorg/h2/table/TableFilter;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.h2.table.TableFilter.$assertionsDisabled:Z
         3: .line 45
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.h2.engine.Session, org.h2.table.Table, java.lang.String, boolean, org.h2.command.dml.Select, int, org.h2.table.IndexHints);
    descriptor: (Lorg/h2/engine/Session;Lorg/h2/table/Table;Ljava/lang/String;ZLorg/h2/command/dml/Select;ILorg/h2/table/IndexHints;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=8
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.engine.Session session
        start local 2 // org.h2.table.Table table
        start local 3 // java.lang.String alias
        start local 4 // boolean rightsChecked
        start local 5 // org.h2.command.dml.Select select
        start local 6 // int orderInFrom
        start local 7 // org.h2.table.IndexHints indexHints
         0: .line 138
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 67
            aload 0 /* this */
            iconst_m1
            putfield org.h2.table.TableFilter.joinFilterId:I
         2: .line 82
            aload 0 /* this */
            invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
            putfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
         3: .line 140
            aload 0 /* this */
            aload 1 /* session */
            putfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
         4: .line 141
            aload 0 /* this */
            aload 2 /* table */
            putfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
         5: .line 142
            aload 0 /* this */
            aload 3 /* alias */
            putfield org.h2.table.TableFilter.alias:Ljava/lang/String;
         6: .line 143
            aload 0 /* this */
            aload 5 /* select */
            putfield org.h2.table.TableFilter.select:Lorg/h2/command/dml/Select;
         7: .line 144
            aload 0 /* this */
            new org.h2.index.IndexCursor
            dup
            aload 0 /* this */
            invokespecial org.h2.index.IndexCursor.<init>:(Lorg/h2/table/TableFilter;)V
            putfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
         8: .line 145
            iload 4 /* rightsChecked */
            ifne 10
         9: .line 146
            aload 1 /* session */
            invokevirtual org.h2.engine.Session.getUser:()Lorg/h2/engine/User;
            aload 2 /* table */
            iconst_1
            invokevirtual org.h2.engine.User.checkRight:(Lorg/h2/table/Table;I)V
        10: .line 148
      StackMap locals: org.h2.table.TableFilter org.h2.engine.Session org.h2.table.Table java.lang.String int org.h2.command.dml.Select int org.h2.table.IndexHints
      StackMap stack:
            aload 0 /* this */
            aload 1 /* session */
            invokevirtual org.h2.engine.Session.nextObjectId:()I
            putfield org.h2.table.TableFilter.hashCode:I
        11: .line 149
            aload 0 /* this */
            iload 6 /* orderInFrom */
            putfield org.h2.table.TableFilter.orderInFrom:I
        12: .line 150
            aload 0 /* this */
            aload 7 /* indexHints */
            putfield org.h2.table.TableFilter.indexHints:Lorg/h2/table/IndexHints;
        13: .line 151
            return
        end local 7 // org.h2.table.IndexHints indexHints
        end local 6 // int orderInFrom
        end local 5 // org.h2.command.dml.Select select
        end local 4 // boolean rightsChecked
        end local 3 // java.lang.String alias
        end local 2 // org.h2.table.Table table
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lorg/h2/table/TableFilter;
            0   14     1        session  Lorg/h2/engine/Session;
            0   14     2          table  Lorg/h2/table/Table;
            0   14     3          alias  Ljava/lang/String;
            0   14     4  rightsChecked  Z
            0   14     5         select  Lorg/h2/command/dml/Select;
            0   14     6    orderInFrom  I
            0   14     7     indexHints  Lorg/h2/table/IndexHints;
    MethodParameters:
               Name  Flags
      session        
      table          
      alias          
      rightsChecked  
      select         
      orderInFrom    
      indexHints     

  public int getOrderInFrom();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 160
            aload 0 /* this */
            getfield org.h2.table.TableFilter.orderInFrom:I
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

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

  public org.h2.command.dml.Select getSelect();
    descriptor: ()Lorg/h2/command/dml/Select;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 169
            aload 0 /* this */
            getfield org.h2.table.TableFilter.select:Lorg/h2/command/dml/Select;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public org.h2.table.Table getTable();
    descriptor: ()Lorg/h2/table/Table;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 173
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public void lock(org.h2.engine.Session, boolean, boolean);
    descriptor: (Lorg/h2/engine/Session;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.engine.Session s
        start local 2 // boolean exclusive
        start local 3 // boolean forceLockEvenInMvcc
         0: .line 184
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            aload 1 /* s */
            iload 2 /* exclusive */
            iload 3 /* forceLockEvenInMvcc */
            invokevirtual org.h2.table.Table.lock:(Lorg/h2/engine/Session;ZZ)Z
            pop
         1: .line 185
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 3
         2: .line 186
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* s */
            iload 2 /* exclusive */
            iload 3 /* forceLockEvenInMvcc */
            invokevirtual org.h2.table.TableFilter.lock:(Lorg/h2/engine/Session;ZZ)V
         3: .line 188
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean forceLockEvenInMvcc
        end local 2 // boolean exclusive
        end local 1 // org.h2.engine.Session s
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lorg/h2/table/TableFilter;
            0    4     1                    s  Lorg/h2/engine/Session;
            0    4     2            exclusive  Z
            0    4     3  forceLockEvenInMvcc  Z
    MethodParameters:
                     Name  Flags
      s                    
      exclusive            
      forceLockEvenInMvcc  

  public org.h2.table.PlanItem getBestPlanItem(org.h2.engine.Session, org.h2.table.TableFilter[], int, org.h2.command.dml.AllColumnsForPlan);
    descriptor: (Lorg/h2/engine/Session;[Lorg/h2/table/TableFilter;ILorg/h2/command/dml/AllColumnsForPlan;)Lorg/h2/table/PlanItem;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=12, args_size=5
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.engine.Session s
        start local 2 // org.h2.table.TableFilter[] filters
        start local 3 // int filter
        start local 4 // org.h2.command.dml.AllColumnsForPlan allColumnsSet
         0: .line 202
            aconst_null
            astore 5 /* item1 */
        start local 5 // org.h2.table.PlanItem item1
         1: .line 203
            aconst_null
            astore 6 /* sortOrder */
        start local 6 // org.h2.result.SortOrder sortOrder
         2: .line 204
            aload 0 /* this */
            getfield org.h2.table.TableFilter.select:Lorg/h2/command/dml/Select;
            ifnull 4
         3: .line 205
            aload 0 /* this */
            getfield org.h2.table.TableFilter.select:Lorg/h2/command/dml/Select;
            invokevirtual org.h2.command.dml.Select.getSortOrder:()Lorg/h2/result/SortOrder;
            astore 6 /* sortOrder */
         4: .line 207
      StackMap locals: org.h2.table.PlanItem org.h2.result.SortOrder
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifeq 12
         5: .line 208
            new org.h2.table.PlanItem
            dup
            invokespecial org.h2.table.PlanItem.<init>:()V
            astore 5 /* item1 */
         6: .line 209
            aload 5 /* item1 */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            aload 1 /* s */
            aconst_null
            aload 2 /* filters */
            iload 3 /* filter */
         7: .line 210
            aload 6 /* sortOrder */
            aload 4 /* allColumnsSet */
         8: .line 209
            invokevirtual org.h2.table.Table.getScanIndex:(Lorg/h2/engine/Session;[I[Lorg/h2/table/TableFilter;ILorg/h2/result/SortOrder;Lorg/h2/command/dml/AllColumnsForPlan;)Lorg/h2/index/Index;
            invokevirtual org.h2.table.PlanItem.setIndex:(Lorg/h2/index/Index;)V
         9: .line 211
            aload 5 /* item1 */
            aload 5 /* item1 */
            invokevirtual org.h2.table.PlanItem.getIndex:()Lorg/h2/index/Index;
            aload 1 /* s */
            aconst_null
            aload 2 /* filters */
            iload 3 /* filter */
        10: .line 212
            aload 6 /* sortOrder */
            aload 4 /* allColumnsSet */
        11: .line 211
            invokeinterface org.h2.index.Index.getCost:(Lorg/h2/engine/Session;[I[Lorg/h2/table/TableFilter;ILorg/h2/result/SortOrder;Lorg/h2/command/dml/AllColumnsForPlan;)D
            putfield org.h2.table.PlanItem.cost:D
        12: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getColumns:()[Lorg/h2/table/Column;
            arraylength
            istore 7 /* len */
        start local 7 // int len
        13: .line 215
            iload 7 /* len */
            newarray 10
            astore 8 /* masks */
        start local 8 // int[] masks
        14: .line 216
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 10
            goto 23
      StackMap locals: org.h2.table.TableFilter org.h2.engine.Session org.h2.table.TableFilter[] int org.h2.command.dml.AllColumnsForPlan org.h2.table.PlanItem org.h2.result.SortOrder int int[] top java.util.Iterator
      StackMap stack:
        15: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.h2.index.IndexCondition
            astore 9 /* condition */
        start local 9 // org.h2.index.IndexCondition condition
        16: .line 217
            aload 9 /* condition */
            invokevirtual org.h2.index.IndexCondition.isEvaluatable:()Z
            ifeq 23
        17: .line 218
            aload 9 /* condition */
            invokevirtual org.h2.index.IndexCondition.isAlwaysFalse:()Z
            ifeq 20
        18: .line 219
            aconst_null
            astore 8 /* masks */
        19: .line 220
            goto 24
        20: .line 222
      StackMap locals: org.h2.table.TableFilter org.h2.engine.Session org.h2.table.TableFilter[] int org.h2.command.dml.AllColumnsForPlan org.h2.table.PlanItem org.h2.result.SortOrder int int[] org.h2.index.IndexCondition java.util.Iterator
      StackMap stack:
            aload 9 /* condition */
            invokevirtual org.h2.index.IndexCondition.getColumn:()Lorg/h2/table/Column;
            invokevirtual org.h2.table.Column.getColumnId:()I
            istore 11 /* id */
        start local 11 // int id
        21: .line 223
            iload 11 /* id */
            iflt 23
        22: .line 224
            aload 8 /* masks */
            iload 11 /* id */
            dup2
            iaload
            aload 9 /* condition */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual org.h2.index.IndexCondition.getMask:(Ljava/util/ArrayList;)I
            ior
            iastore
        end local 11 // int id
        end local 9 // org.h2.index.IndexCondition condition
        23: .line 216
      StackMap locals: org.h2.table.TableFilter org.h2.engine.Session org.h2.table.TableFilter[] int org.h2.command.dml.AllColumnsForPlan org.h2.table.PlanItem org.h2.result.SortOrder int int[] top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        24: .line 228
      StackMap locals: org.h2.table.TableFilter org.h2.engine.Session org.h2.table.TableFilter[] int org.h2.command.dml.AllColumnsForPlan org.h2.table.PlanItem org.h2.result.SortOrder int int[]
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            aload 1 /* s */
            aload 8 /* masks */
            aload 2 /* filters */
            iload 3 /* filter */
            aload 6 /* sortOrder */
            aload 4 /* allColumnsSet */
            invokevirtual org.h2.table.Table.getBestPlanItem:(Lorg/h2/engine/Session;[I[Lorg/h2/table/TableFilter;ILorg/h2/result/SortOrder;Lorg/h2/command/dml/AllColumnsForPlan;)Lorg/h2/table/PlanItem;
            astore 9 /* item */
        start local 9 // org.h2.table.PlanItem item
        25: .line 229
            aload 9 /* item */
            aload 8 /* masks */
            invokevirtual org.h2.table.PlanItem.setMasks:([I)V
        26: .line 233
            aload 9 /* item */
            dup
            getfield org.h2.table.PlanItem.cost:D
            aload 9 /* item */
            getfield org.h2.table.PlanItem.cost:D
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            i2d
            dmul
            ldc 100.0
            ddiv
            iload 3 /* filter */
            iconst_1
            iadd
            i2d
            ddiv
            dsub
            putfield org.h2.table.PlanItem.cost:D
        27: .line 235
            aload 5 /* item1 */
            ifnull 29
            aload 5 /* item1 */
            getfield org.h2.table.PlanItem.cost:D
            aload 9 /* item */
            getfield org.h2.table.PlanItem.cost:D
            dcmpg
            ifge 29
        28: .line 236
            aload 5 /* item1 */
            astore 9 /* item */
        29: .line 239
      StackMap locals: org.h2.table.PlanItem
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 33
        30: .line 240
            aload 0 /* this */
            iconst_1
            invokevirtual org.h2.table.TableFilter.setEvaluatable:(Z)V
        31: .line 241
            aload 9 /* item */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            aload 1 /* s */
            aload 2 /* filters */
            iload 3 /* filter */
            aload 4 /* allColumnsSet */
            invokevirtual org.h2.table.TableFilter.getBestPlanItem:(Lorg/h2/engine/Session;[Lorg/h2/table/TableFilter;ILorg/h2/command/dml/AllColumnsForPlan;)Lorg/h2/table/PlanItem;
            invokevirtual org.h2.table.PlanItem.setNestedJoinPlan:(Lorg/h2/table/PlanItem;)V
        32: .line 244
            aload 9 /* item */
            dup
            getfield org.h2.table.PlanItem.cost:D
            aload 9 /* item */
            getfield org.h2.table.PlanItem.cost:D
            aload 9 /* item */
            invokevirtual org.h2.table.PlanItem.getNestedJoinPlan:()Lorg/h2/table/PlanItem;
            getfield org.h2.table.PlanItem.cost:D
            dmul
            dadd
            putfield org.h2.table.PlanItem.cost:D
        33: .line 246
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 39
        34: .line 247
            aload 0 /* this */
            iconst_1
            invokevirtual org.h2.table.TableFilter.setEvaluatable:(Z)V
        35: .line 249
      StackMap locals:
      StackMap stack:
            iinc 3 /* filter */ 1
        36: .line 250
            aload 2 /* filters */
            iload 3 /* filter */
            aaload
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            if_acmpne 35
        37: .line 251
            aload 9 /* item */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* s */
            aload 2 /* filters */
            iload 3 /* filter */
            aload 4 /* allColumnsSet */
            invokevirtual org.h2.table.TableFilter.getBestPlanItem:(Lorg/h2/engine/Session;[Lorg/h2/table/TableFilter;ILorg/h2/command/dml/AllColumnsForPlan;)Lorg/h2/table/PlanItem;
            invokevirtual org.h2.table.PlanItem.setJoinPlan:(Lorg/h2/table/PlanItem;)V
        38: .line 254
            aload 9 /* item */
            dup
            getfield org.h2.table.PlanItem.cost:D
            aload 9 /* item */
            getfield org.h2.table.PlanItem.cost:D
            aload 9 /* item */
            invokevirtual org.h2.table.PlanItem.getJoinPlan:()Lorg/h2/table/PlanItem;
            getfield org.h2.table.PlanItem.cost:D
            dmul
            dadd
            putfield org.h2.table.PlanItem.cost:D
        39: .line 256
      StackMap locals:
      StackMap stack:
            aload 9 /* item */
            areturn
        end local 9 // org.h2.table.PlanItem item
        end local 8 // int[] masks
        end local 7 // int len
        end local 6 // org.h2.result.SortOrder sortOrder
        end local 5 // org.h2.table.PlanItem item1
        end local 4 // org.h2.command.dml.AllColumnsForPlan allColumnsSet
        end local 3 // int filter
        end local 2 // org.h2.table.TableFilter[] filters
        end local 1 // org.h2.engine.Session s
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   40     0           this  Lorg/h2/table/TableFilter;
            0   40     1              s  Lorg/h2/engine/Session;
            0   40     2        filters  [Lorg/h2/table/TableFilter;
            0   40     3         filter  I
            0   40     4  allColumnsSet  Lorg/h2/command/dml/AllColumnsForPlan;
            1   40     5          item1  Lorg/h2/table/PlanItem;
            2   40     6      sortOrder  Lorg/h2/result/SortOrder;
           13   40     7            len  I
           14   40     8          masks  [I
           16   23     9      condition  Lorg/h2/index/IndexCondition;
           21   23    11             id  I
           25   40     9           item  Lorg/h2/table/PlanItem;
    MethodParameters:
               Name  Flags
      s              
      filters        
      filter         
      allColumnsSet  

  public void setPlanItem(org.h2.table.PlanItem);
    descriptor: (Lorg/h2/table/PlanItem;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.PlanItem item
         0: .line 265
            aload 1 /* item */
            ifnonnull 2
         1: .line 268
            return
         2: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* item */
            invokevirtual org.h2.table.PlanItem.getIndex:()Lorg/h2/index/Index;
            invokevirtual org.h2.table.TableFilter.setIndex:(Lorg/h2/index/Index;)V
         3: .line 271
            aload 0 /* this */
            aload 1 /* item */
            invokevirtual org.h2.table.PlanItem.getMasks:()[I
            putfield org.h2.table.TableFilter.masks:[I
         4: .line 272
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 9
         5: .line 273
            aload 1 /* item */
            invokevirtual org.h2.table.PlanItem.getNestedJoinPlan:()Lorg/h2/table/PlanItem;
            ifnull 8
         6: .line 274
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            aload 1 /* item */
            invokevirtual org.h2.table.PlanItem.getNestedJoinPlan:()Lorg/h2/table/PlanItem;
            invokevirtual org.h2.table.TableFilter.setPlanItem:(Lorg/h2/table/PlanItem;)V
         7: .line 275
            goto 9
         8: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.setScanIndexes:()V
         9: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 14
        10: .line 280
            aload 1 /* item */
            invokevirtual org.h2.table.PlanItem.getJoinPlan:()Lorg/h2/table/PlanItem;
            ifnull 13
        11: .line 281
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* item */
            invokevirtual org.h2.table.PlanItem.getJoinPlan:()Lorg/h2/table/PlanItem;
            invokevirtual org.h2.table.TableFilter.setPlanItem:(Lorg/h2/table/PlanItem;)V
        12: .line 282
            goto 14
        13: .line 283
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.setScanIndexes:()V
        14: .line 286
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.h2.table.PlanItem item
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Lorg/h2/table/TableFilter;
            0   15     1  item  Lorg/h2/table/PlanItem;
    MethodParameters:
      Name  Flags
      item  

  private void setScanIndexes();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 292
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            ifnonnull 2
         1: .line 293
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.table.Table.getScanIndex:(Lorg/h2/engine/Session;)Lorg/h2/index/Index;
            invokevirtual org.h2.table.TableFilter.setIndex:(Lorg/h2/index/Index;)V
         2: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 4
         3: .line 296
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.setScanIndexes:()V
         4: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 6
         5: .line 299
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.setScanIndexes:()V
         6: .line 301
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/h2/table/TableFilter;

  public void prepare();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 310
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 10
         2: .line 311
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            iload 1 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.index.IndexCondition
            astore 2 /* condition */
        start local 2 // org.h2.index.IndexCondition condition
         3: .line 312
            aload 2 /* condition */
            invokevirtual org.h2.index.IndexCondition.isAlwaysFalse:()Z
            ifne 9
         4: .line 313
            aload 2 /* condition */
            invokevirtual org.h2.index.IndexCondition.getColumn:()Lorg/h2/table/Column;
            astore 3 /* col */
        start local 3 // org.h2.table.Column col
         5: .line 314
            aload 3 /* col */
            invokevirtual org.h2.table.Column.getColumnId:()I
            iflt 9
         6: .line 315
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            aload 3 /* col */
            invokeinterface org.h2.index.Index.getColumnIndex:(Lorg/h2/table/Column;)I
            ifge 9
         7: .line 316
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            iload 1 /* i */
            invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
            pop
         8: .line 317
            iinc 1 /* i */ -1
        end local 3 // org.h2.table.Column col
        end local 2 // org.h2.index.IndexCondition condition
         9: .line 310
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 1 /* i */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            if_icmplt 2
        end local 1 // int i
        11: .line 322
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 15
        12: .line 323
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            aload 0 /* this */
            if_acmpne 14
        13: .line 324
            ldc "self join"
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            pop
        14: .line 326
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.prepare:()V
        15: .line 328
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 19
        16: .line 329
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 0 /* this */
            if_acmpne 18
        17: .line 330
            ldc "self join"
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            pop
        18: .line 332
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.prepare:()V
        19: .line 334
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            ifnull 21
        20: .line 335
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.expression.Expression.optimize:(Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
            putfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
        21: .line 337
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            ifnull 23
        22: .line 338
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.expression.Expression.optimize:(Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
            putfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
        23: .line 340
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   24     0       this  Lorg/h2/table/TableFilter;
            1   11     1          i  I
            3    9     2  condition  Lorg/h2/index/IndexCondition;
            5    9     3        col  Lorg/h2/table/Column;

  public void startQuery(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.engine.Session s
         0: .line 348
            aload 0 /* this */
            aload 1 /* s */
            putfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
         1: .line 349
            aload 0 /* this */
            iconst_0
            putfield org.h2.table.TableFilter.scanCount:I
         2: .line 350
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 4
         3: .line 351
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            aload 1 /* s */
            invokevirtual org.h2.table.TableFilter.startQuery:(Lorg/h2/engine/Session;)V
         4: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 6
         5: .line 354
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* s */
            invokevirtual org.h2.table.TableFilter.startQuery:(Lorg/h2/engine/Session;)V
         6: .line 356
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.h2.engine.Session s
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/h2/table/TableFilter;
            0    7     1     s  Lorg/h2/engine/Session;
    MethodParameters:
      Name  Flags
      s     

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 362
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            ifnull 3
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinFilterId:I
            ifne 3
         1: .line 364
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            iconst_1
            invokevirtual org.h2.table.JoinBatch.reset:(Z)V
         2: .line 365
            return
         3: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 5
         4: .line 368
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.reset:()V
         5: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 7
         6: .line 371
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.reset:()V
         7: .line 373
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.h2.table.TableFilter.state:I
         8: .line 374
            aload 0 /* this */
            iconst_0
            putfield org.h2.table.TableFilter.foundOne:Z
         9: .line 375
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/h2/table/TableFilter;

  private boolean isAlwaysTopTableFilter(int);
    descriptor: (I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // int filter
         0: .line 378
            iload 1 /* filter */
            ifeq 2
         1: .line 379
            iconst_0
            ireturn
         2: .line 382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.engine.Session.getSubQueryInfo:()Lorg/h2/table/SubQueryInfo;
            astore 2 /* info */
        start local 2 // org.h2.table.SubQueryInfo info
         3: .line 384
      StackMap locals: org.h2.table.SubQueryInfo
      StackMap stack:
            aload 2 /* info */
            ifnonnull 5
         4: .line 385
            iconst_1
            ireturn
         5: .line 387
      StackMap locals:
      StackMap stack:
            aload 2 /* info */
            invokevirtual org.h2.table.SubQueryInfo.getFilter:()I
            ifeq 7
         6: .line 388
            iconst_0
            ireturn
         7: .line 390
      StackMap locals:
      StackMap stack:
            aload 2 /* info */
            invokevirtual org.h2.table.SubQueryInfo.getUpper:()Lorg/h2/table/SubQueryInfo;
            astore 2 /* info */
         8: .line 383
            goto 3
        end local 2 // org.h2.table.SubQueryInfo info
        end local 1 // int filter
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lorg/h2/table/TableFilter;
            0    9     1  filter  I
            3    9     2    info  Lorg/h2/table/SubQueryInfo;
    MethodParameters:
        Name  Flags
      filter  

  public org.h2.table.JoinBatch prepareJoinBatch(org.h2.table.JoinBatch, org.h2.table.TableFilter[], int);
    descriptor: (Lorg/h2/table/JoinBatch;[Lorg/h2/table/TableFilter;I)Lorg/h2/table/JoinBatch;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.JoinBatch jb
        start local 2 // org.h2.table.TableFilter[] filters
        start local 3 // int filter
         0: .line 404
            getstatic org.h2.table.TableFilter.$assertionsDisabled:Z
            ifne 1
            aload 2 /* filters */
            iload 3 /* filter */
            aaload
            aload 0 /* this */
            if_acmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 405
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
         2: .line 406
            aload 0 /* this */
            iconst_m1
            putfield org.h2.table.TableFilter.joinFilterId:I
         3: .line 407
            aload 0 /* this */
            invokevirtual org.h2.table.TableFilter.getTable:()Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.isView:()Z
            ifeq 11
         4: .line 408
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.masks:[I
            aload 2 /* filters */
            iload 3 /* filter */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.select:Lorg/h2/command/dml/Select;
            invokevirtual org.h2.command.dml.Select.getSortOrder:()Lorg/h2/result/SortOrder;
            invokevirtual org.h2.engine.Session.pushSubQueryInfo:([I[Lorg/h2/table/TableFilter;ILorg/h2/result/SortOrder;)V
         5: .line 410
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            checkcast org.h2.index.ViewIndex
            invokevirtual org.h2.index.ViewIndex.getQuery:()Lorg/h2/command/dml/Query;
            invokevirtual org.h2.command.dml.Query.prepareJoinBatch:()V
         6: .line 411
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 4
         8: .line 412
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.engine.Session.popSubQueryInfo:()V
         9: .line 413
            aload 4
            athrow
        10: .line 412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.engine.Session.popSubQueryInfo:()V
        11: .line 424
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* lookupBatch */
        start local 4 // org.h2.index.IndexLookupBatch lookupBatch
        12: .line 425
            aload 1 /* jb */
            ifnonnull 16
            aload 0 /* this */
            getfield org.h2.table.TableFilter.select:Lorg/h2/command/dml/Select;
            ifnull 16
            aload 0 /* this */
            iload 3 /* filter */
            invokevirtual org.h2.table.TableFilter.isAlwaysTopTableFilter:(I)Z
            ifne 16
        13: .line 426
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            aload 2 /* filters */
            iload 3 /* filter */
            invokeinterface org.h2.index.Index.createLookupBatch:([Lorg/h2/table/TableFilter;I)Lorg/h2/index/IndexLookupBatch;
            astore 4 /* lookupBatch */
        14: .line 427
            aload 4 /* lookupBatch */
            ifnull 16
        15: .line 428
            new org.h2.table.JoinBatch
            dup
            iload 3 /* filter */
            iconst_1
            iadd
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokespecial org.h2.table.JoinBatch.<init>:(ILorg/h2/table/TableFilter;)V
            astore 1 /* jb */
        16: .line 431
      StackMap locals: org.h2.index.IndexLookupBatch
      StackMap stack:
            aload 1 /* jb */
            ifnull 26
        17: .line 432
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 19
        18: .line 433
            invokestatic org.h2.message.DbException.throwInternalError:()Ljava/lang/RuntimeException;
            athrow
        19: .line 435
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* jb */
            putfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
        20: .line 436
            aload 0 /* this */
            iload 3 /* filter */
            putfield org.h2.table.TableFilter.joinFilterId:I
        21: .line 437
            aload 4 /* lookupBatch */
            ifnonnull 25
            aload 0 /* this */
            iload 3 /* filter */
            invokevirtual org.h2.table.TableFilter.isAlwaysTopTableFilter:(I)Z
            ifne 25
        22: .line 441
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            aload 2 /* filters */
            iload 3 /* filter */
            invokeinterface org.h2.index.Index.createLookupBatch:([Lorg/h2/table/TableFilter;I)Lorg/h2/index/IndexLookupBatch;
            astore 4 /* lookupBatch */
        23: .line 442
            aload 4 /* lookupBatch */
            ifnonnull 25
        24: .line 445
            aload 0 /* this */
            invokestatic org.h2.table.JoinBatch.createFakeIndexLookupBatch:(Lorg/h2/table/TableFilter;)Lorg/h2/index/IndexLookupBatch;
            astore 4 /* lookupBatch */
        25: .line 448
      StackMap locals:
      StackMap stack:
            aload 1 /* jb */
            aload 0 /* this */
            aload 4 /* lookupBatch */
            invokevirtual org.h2.table.JoinBatch.register:(Lorg/h2/table/TableFilter;Lorg/h2/index/IndexLookupBatch;)V
        26: .line 450
      StackMap locals:
      StackMap stack:
            aload 1 /* jb */
            areturn
        end local 4 // org.h2.index.IndexLookupBatch lookupBatch
        end local 3 // int filter
        end local 2 // org.h2.table.TableFilter[] filters
        end local 1 // org.h2.table.JoinBatch jb
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0         this  Lorg/h2/table/TableFilter;
            0   27     1           jb  Lorg/h2/table/JoinBatch;
            0   27     2      filters  [Lorg/h2/table/TableFilter;
            0   27     3       filter  I
           12   27     4  lookupBatch  Lorg/h2/index/IndexLookupBatch;
      Exception table:
        from    to  target  type
           5     7       7  any
    MethodParameters:
         Name  Flags
      jb       
      filters  
      filter   

  public int getJoinFilterId();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 454
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinFilterId:I
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public org.h2.table.JoinBatch getJoinBatch();
    descriptor: ()Lorg/h2/table/JoinBatch;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 458
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public boolean next();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 467
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            ifnull 2
         1: .line 470
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            invokevirtual org.h2.table.JoinBatch.next:()Z
            ireturn
         2: .line 472
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_2
            if_icmpne 4
         3: .line 473
            iconst_0
            ireturn
         4: .line 474
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            ifne 12
         5: .line 475
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual org.h2.index.IndexCursor.find:(Lorg/h2/engine/Session;Ljava/util/ArrayList;)V
         6: .line 476
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            invokevirtual org.h2.index.IndexCursor.isAlwaysFalse:()Z
            ifne 14
         7: .line 477
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 9
         8: .line 478
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.reset:()V
         9: .line 480
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 14
        10: .line 481
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.reset:()V
        11: .line 484
            goto 14
        12: .line 487
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 14
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.next:()Z
            ifeq 14
        13: .line 488
            iconst_1
            ireturn
        14: .line 493
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_3
            if_icmpne 16
        15: .line 494
            goto 51
        16: .line 496
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            invokevirtual org.h2.index.IndexCursor.isAlwaysFalse:()Z
            ifeq 19
        17: .line 497
            aload 0 /* this */
            iconst_2
            putfield org.h2.table.TableFilter.state:I
        18: .line 498
            goto 31
      StackMap locals:
      StackMap stack:
        19: aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 23
        20: .line 499
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            ifne 31
        21: .line 500
            aload 0 /* this */
            iconst_1
            putfield org.h2.table.TableFilter.state:I
        22: .line 502
            goto 31
        23: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.h2.table.TableFilter.scanCount:I
            iconst_1
            iadd
            dup_x1
            putfield org.h2.table.TableFilter.scanCount:I
            sipush 4095
            iand
            ifne 25
        24: .line 504
            aload 0 /* this */
            invokevirtual org.h2.table.TableFilter.checkTimeout:()V
        25: .line 506
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            invokevirtual org.h2.index.IndexCursor.next:()Z
            ifeq 30
        26: .line 507
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            invokevirtual org.h2.index.IndexCursor.getSearchRow:()Lorg/h2/result/SearchRow;
            putfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
        27: .line 508
            aload 0 /* this */
            aconst_null
            putfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
        28: .line 509
            aload 0 /* this */
            iconst_1
            putfield org.h2.table.TableFilter.state:I
        29: .line 510
            goto 31
        30: .line 511
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield org.h2.table.TableFilter.state:I
        31: .line 514
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 36
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_1
            if_icmpne 36
        32: .line 515
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.next:()Z
            ifne 36
        33: .line 516
            aload 0 /* this */
            iconst_2
            putfield org.h2.table.TableFilter.state:I
        34: .line 517
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ifeq 14
            aload 0 /* this */
            getfield org.h2.table.TableFilter.foundOne:Z
            ifeq 36
        35: .line 520
            goto 14
        36: .line 525
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_2
            if_icmpne 39
        37: .line 526
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ifeq 51
            aload 0 /* this */
            getfield org.h2.table.TableFilter.foundOne:Z
            ifne 51
        38: .line 527
            aload 0 /* this */
            invokevirtual org.h2.table.TableFilter.setNullRow:()V
        39: .line 532
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            invokevirtual org.h2.table.TableFilter.isOk:(Lorg/h2/expression/Expression;)Z
            ifne 41
        40: .line 533
            goto 14
        41: .line 535
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            invokevirtual org.h2.table.TableFilter.isOk:(Lorg/h2/expression/Expression;)Z
            istore 1 /* joinConditionOk */
        start local 1 // boolean joinConditionOk
        42: .line 536
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_1
            if_icmpne 45
        43: .line 537
            iload 1 /* joinConditionOk */
            ifeq 14
        44: .line 538
            aload 0 /* this */
            iconst_1
            putfield org.h2.table.TableFilter.foundOne:Z
        45: .line 543
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 49
        46: .line 544
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.reset:()V
        47: .line 545
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.next:()Z
            ifne 49
        48: .line 546
            goto 14
        49: .line 550
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_3
            if_icmpeq 50
            iload 1 /* joinConditionOk */
            ifeq 14
        50: .line 551
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // boolean joinConditionOk
        51: .line 554
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield org.h2.table.TableFilter.state:I
        52: .line 555
            iconst_0
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   53     0             this  Lorg/h2/table/TableFilter;
           42   51     1  joinConditionOk  Z

  protected void setNullRow();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 562
            aload 0 /* this */
            iconst_3
            putfield org.h2.table.TableFilter.state:I
         1: .line 563
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getNullRow:()Lorg/h2/result/Row;
            putfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
         2: .line 564
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
            putfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
         3: .line 565
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 5
         4: .line 566
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            new org.h2.table.TableFilter$1
            dup
            aload 0 /* this */
            invokespecial org.h2.table.TableFilter$1.<init>:(Lorg/h2/table/TableFilter;)V
            invokevirtual org.h2.table.TableFilter.visit:(Lorg/h2/table/TableFilter$TableFilterVisitor;)V
         5: .line 573
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/h2/table/TableFilter;

  private void checkTimeout();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 576
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.engine.Session.checkCanceled:()V
         1: .line 577
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;

  boolean isOk(org.h2.expression.Expression);
    descriptor: (Lorg/h2/expression/Expression;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.expression.Expression condition
         0: .line 587
            aload 1 /* condition */
            ifnull 1
            aload 1 /* condition */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.expression.Expression.getBooleanValue:(Lorg/h2/engine/Session;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // org.h2.expression.Expression condition
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/h2/table/TableFilter;
            0    2     1  condition  Lorg/h2/expression/Expression;
    MethodParameters:
           Name  Flags
      condition  

  public org.h2.result.Row get();
    descriptor: ()Lorg/h2/result/Row;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 596
            aload 0 /* this */
            getfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
            ifnonnull 2
            aload 0 /* this */
            getfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
            ifnull 2
         1: .line 597
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            invokevirtual org.h2.index.IndexCursor.get:()Lorg/h2/result/Row;
            putfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
         2: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/table/TableFilter;

  public void set(org.h2.result.Row);
    descriptor: (Lorg/h2/result/Row;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.result.Row current
         0: .line 608
            aload 0 /* this */
            aload 1 /* current */
            putfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
         1: .line 609
            aload 0 /* this */
            aload 1 /* current */
            putfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
         2: .line 610
            return
        end local 1 // org.h2.result.Row current
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/h2/table/TableFilter;
            0    3     1  current  Lorg/h2/result/Row;
    MethodParameters:
         Name  Flags
      current  

  public java.lang.String getTableAlias();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 620
            aload 0 /* this */
            getfield org.h2.table.TableFilter.alias:Ljava/lang/String;
            ifnull 2
         1: .line 621
            aload 0 /* this */
            getfield org.h2.table.TableFilter.alias:Ljava/lang/String;
            areturn
         2: .line 623
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getName:()Ljava/lang/String;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/table/TableFilter;

  public void addIndexCondition(org.h2.index.IndexCondition);
    descriptor: (Lorg/h2/index/IndexCondition;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.index.IndexCondition condition
         0: .line 632
            aload 0 /* this */
            getfield org.h2.table.TableFilter.doneWithIndexConditions:Z
            ifne 2
         1: .line 633
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            aload 1 /* condition */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 635
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.h2.index.IndexCondition condition
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/h2/table/TableFilter;
            0    3     1  condition  Lorg/h2/index/IndexCondition;
    MethodParameters:
           Name  Flags
      condition  

  public void doneWithIndexConditions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 641
            aload 0 /* this */
            iconst_1
            putfield org.h2.table.TableFilter.doneWithIndexConditions:Z
         1: .line 642
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;

  public void addFilterCondition(org.h2.expression.Expression, boolean);
    descriptor: (Lorg/h2/expression/Expression;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.expression.Expression condition
        start local 2 // boolean isJoin
         0: .line 651
            iload 2 /* isJoin */
            ifeq 8
         1: .line 652
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            ifnonnull 4
         2: .line 653
            aload 0 /* this */
            aload 1 /* condition */
            putfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
         3: .line 654
            goto 14
         4: .line 655
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.h2.expression.condition.ConditionAndOr
            dup
            iconst_0
         5: .line 656
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 1 /* condition */
            invokespecial org.h2.expression.condition.ConditionAndOr.<init>:(ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
         6: .line 655
            putfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
         7: .line 658
            goto 14
         8: .line 659
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            ifnonnull 11
         9: .line 660
            aload 0 /* this */
            aload 1 /* condition */
            putfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
        10: .line 661
            goto 14
        11: .line 662
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.h2.expression.condition.ConditionAndOr
            dup
            iconst_0
        12: .line 663
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            aload 1 /* condition */
            invokespecial org.h2.expression.condition.ConditionAndOr.<init>:(ILorg/h2/expression/Expression;Lorg/h2/expression/Expression;)V
        13: .line 662
            putfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
        14: .line 666
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean isJoin
        end local 1 // org.h2.expression.Expression condition
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lorg/h2/table/TableFilter;
            0   15     1  condition  Lorg/h2/expression/Expression;
            0   15     2     isJoin  Z
    MethodParameters:
           Name  Flags
      condition  
      isJoin     

  public void addJoin(org.h2.table.TableFilter, boolean, org.h2.expression.Expression);
    descriptor: (Lorg/h2/table/TableFilter;ZLorg/h2/expression/Expression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.TableFilter filter
        start local 2 // boolean outer
        start local 3 // org.h2.expression.Expression on
         0: .line 676
            aload 3 /* on */
            ifnull 5
         1: .line 677
            aload 3 /* on */
            aload 0 /* this */
            iconst_0
            iconst_0
            invokevirtual org.h2.expression.Expression.mapColumns:(Lorg/h2/table/ColumnResolver;II)V
         2: .line 678
            new org.h2.table.TableFilter$MapColumnsVisitor
            dup
            aload 3 /* on */
            invokespecial org.h2.table.TableFilter$MapColumnsVisitor.<init>:(Lorg/h2/expression/Expression;)V
            astore 4 /* visitor */
        start local 4 // org.h2.table.TableFilter$TableFilterVisitor visitor
         3: .line 679
            aload 0 /* this */
            aload 4 /* visitor */
            invokevirtual org.h2.table.TableFilter.visit:(Lorg/h2/table/TableFilter$TableFilterVisitor;)V
         4: .line 680
            aload 1 /* filter */
            aload 4 /* visitor */
            invokevirtual org.h2.table.TableFilter.visit:(Lorg/h2/table/TableFilter$TableFilterVisitor;)V
        end local 4 // org.h2.table.TableFilter$TableFilterVisitor visitor
         5: .line 682
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnonnull 13
         6: .line 683
            aload 0 /* this */
            aload 1 /* filter */
            putfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
         7: .line 684
            aload 1 /* filter */
            iload 2 /* outer */
            putfield org.h2.table.TableFilter.joinOuter:Z
         8: .line 685
            iload 2 /* outer */
            ifeq 10
         9: .line 686
            aload 1 /* filter */
            new org.h2.table.TableFilter$JOIVisitor
            dup
            invokespecial org.h2.table.TableFilter$JOIVisitor.<init>:()V
            invokevirtual org.h2.table.TableFilter.visit:(Lorg/h2/table/TableFilter$TableFilterVisitor;)V
        10: .line 688
      StackMap locals:
      StackMap stack:
            aload 3 /* on */
            ifnull 14
        11: .line 689
            aload 1 /* filter */
            aload 3 /* on */
            invokevirtual org.h2.table.TableFilter.mapAndAddFilter:(Lorg/h2/expression/Expression;)V
        12: .line 691
            goto 14
        13: .line 692
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* filter */
            iload 2 /* outer */
            aload 3 /* on */
            invokevirtual org.h2.table.TableFilter.addJoin:(Lorg/h2/table/TableFilter;ZLorg/h2/expression/Expression;)V
        14: .line 694
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.h2.expression.Expression on
        end local 2 // boolean outer
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0     this  Lorg/h2/table/TableFilter;
            0   15     1   filter  Lorg/h2/table/TableFilter;
            0   15     2    outer  Z
            0   15     3       on  Lorg/h2/expression/Expression;
            3    5     4  visitor  Lorg/h2/table/TableFilter$TableFilterVisitor;
    MethodParameters:
        Name  Flags
      filter  
      outer   
      on      

  public void setNestedJoin(org.h2.table.TableFilter);
    descriptor: (Lorg/h2/table/TableFilter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.TableFilter filter
         0: .line 702
            aload 0 /* this */
            aload 1 /* filter */
            putfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
         1: .line 703
            return
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/h2/table/TableFilter;
            0    2     1  filter  Lorg/h2/table/TableFilter;
    MethodParameters:
        Name  Flags
      filter  

  public void mapAndAddFilter(org.h2.expression.Expression);
    descriptor: (Lorg/h2/expression/Expression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.expression.Expression on
         0: .line 711
            aload 1 /* on */
            aload 0 /* this */
            iconst_0
            iconst_0
            invokevirtual org.h2.expression.Expression.mapColumns:(Lorg/h2/table/ColumnResolver;II)V
         1: .line 712
            aload 0 /* this */
            aload 1 /* on */
            iconst_1
            invokevirtual org.h2.table.TableFilter.addFilterCondition:(Lorg/h2/expression/Expression;Z)V
         2: .line 713
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 4
         3: .line 714
            aload 1 /* on */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            iconst_0
            iconst_0
            invokevirtual org.h2.expression.Expression.mapColumns:(Lorg/h2/table/ColumnResolver;II)V
         4: .line 716
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 6
         5: .line 717
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* on */
            invokevirtual org.h2.table.TableFilter.mapAndAddFilter:(Lorg/h2/expression/Expression;)V
         6: .line 719
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.h2.expression.Expression on
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/h2/table/TableFilter;
            0    7     1    on  Lorg/h2/expression/Expression;
    MethodParameters:
      Name  Flags
      on    

  public void createIndexConditions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 725
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            ifnull 5
         1: .line 726
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.expression.Expression.optimize:(Lorg/h2/engine/Session;)Lorg/h2/expression/Expression;
            putfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
         2: .line 727
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            aload 0 /* this */
            invokevirtual org.h2.expression.Expression.createIndexConditions:(Lorg/h2/engine/Session;Lorg/h2/table/TableFilter;)V
         3: .line 728
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 5
         4: .line 729
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.expression.Expression.createIndexConditions:(Lorg/h2/engine/Session;Lorg/h2/table/TableFilter;)V
         5: .line 732
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 7
         6: .line 733
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.createIndexConditions:()V
         7: .line 735
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 9
         8: .line 736
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            invokevirtual org.h2.table.TableFilter.createIndexConditions:()V
         9: .line 738
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/h2/table/TableFilter;

  public org.h2.table.TableFilter getJoin();
    descriptor: ()Lorg/h2/table/TableFilter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 741
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public boolean isJoinOuter();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 750
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public boolean isJoinOuterIndirect();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 760
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuterIndirect:Z
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public java.lang.StringBuilder getPlanSQL(java.lang.StringBuilder, boolean, boolean);
    descriptor: (Ljava/lang/StringBuilder;ZZ)Ljava/lang/StringBuilder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // org.h2.table.TableFilter this
        start local 1 // java.lang.StringBuilder builder
        start local 2 // boolean isJoin
        start local 3 // boolean alwaysQuote
         0: .line 773
            iload 2 /* isJoin */
            ifeq 5
         1: .line 774
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ifeq 4
         2: .line 775
            aload 1 /* builder */
            ldc "LEFT OUTER JOIN "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 776
            goto 5
         4: .line 777
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            ldc "INNER JOIN "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 780
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 29
         6: .line 781
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 4 /* buffNested */
        start local 4 // java.lang.StringBuilder buffNested
         7: .line 782
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            astore 5 /* n */
        start local 5 // org.h2.table.TableFilter n
         8: .line 784
      StackMap locals: java.lang.StringBuilder org.h2.table.TableFilter
      StackMap stack:
            aload 5 /* n */
            aload 4 /* buffNested */
            aload 5 /* n */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            if_acmpeq 9
            iconst_1
            goto 10
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int java.lang.StringBuilder org.h2.table.TableFilter
      StackMap stack: org.h2.table.TableFilter java.lang.StringBuilder
         9: iconst_0
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int java.lang.StringBuilder org.h2.table.TableFilter
      StackMap stack: org.h2.table.TableFilter java.lang.StringBuilder int
        10: iload 3 /* alwaysQuote */
            invokevirtual org.h2.table.TableFilter.getPlanSQL:(Ljava/lang/StringBuilder;ZZ)Ljava/lang/StringBuilder;
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        11: .line 785
            aload 5 /* n */
            invokevirtual org.h2.table.TableFilter.getJoin:()Lorg/h2/table/TableFilter;
            astore 5 /* n */
        12: .line 786
            aload 5 /* n */
            ifnonnull 8
        13: .line 787
            aload 4 /* buffNested */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 6 /* nested */
        start local 6 // java.lang.String nested
        14: .line 788
            aload 6 /* nested */
            ldc "("
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 15
            iconst_0
            goto 16
      StackMap locals: java.lang.String
      StackMap stack:
        15: iconst_1
      StackMap locals:
      StackMap stack: int
        16: istore 7 /* enclose */
        start local 7 // boolean enclose
        17: .line 789
            iload 7 /* enclose */
            ifeq 19
        18: .line 790
            aload 1 /* builder */
            ldc "(\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 792
      StackMap locals: int
      StackMap stack:
            aload 1 /* builder */
            aload 6 /* nested */
            iconst_4
            iconst_0
            invokestatic org.h2.util.StringUtils.indent:(Ljava/lang/StringBuilder;Ljava/lang/String;IZ)Ljava/lang/StringBuilder;
            pop
        20: .line 793
            iload 7 /* enclose */
            ifeq 22
        21: .line 794
            aload 1 /* builder */
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        22: .line 796
      StackMap locals:
      StackMap stack:
            iload 2 /* isJoin */
            ifeq 28
        23: .line 797
            aload 1 /* builder */
            ldc " ON "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 798
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            ifnonnull 27
        25: .line 801
            aload 1 /* builder */
            ldc "1=1"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 802
            goto 28
        27: .line 803
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 3 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getUnenclosedSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            pop
        28: .line 806
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            areturn
        end local 7 // boolean enclose
        end local 6 // java.lang.String nested
        end local 5 // org.h2.table.TableFilter n
        end local 4 // java.lang.StringBuilder buffNested
        29: .line 808
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.isView:()Z
            ifeq 33
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            checkcast org.h2.table.TableView
            invokevirtual org.h2.table.TableView.isRecursive:()Z
            ifeq 33
        30: .line 809
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getSchema:()Lorg/h2/schema/Schema;
            aload 1 /* builder */
            iload 3 /* alwaysQuote */
            invokevirtual org.h2.schema.Schema.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            bipush 46
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        31: .line 810
            aload 1 /* builder */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getName:()Ljava/lang/String;
            iload 3 /* alwaysQuote */
            invokestatic org.h2.command.Parser.quoteIdentifier:(Ljava/lang/StringBuilder;Ljava/lang/String;Z)Ljava/lang/StringBuilder;
            pop
        32: .line 811
            goto 34
        33: .line 812
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            aload 1 /* builder */
            iload 3 /* alwaysQuote */
            invokevirtual org.h2.table.Table.getSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            pop
        34: .line 814
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.isView:()Z
            ifeq 36
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            checkcast org.h2.table.TableView
            invokevirtual org.h2.table.TableView.isInvalid:()Z
            ifeq 36
        35: .line 815
            ldc 90109
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            ldc "not compiled"
            aastore
            invokestatic org.h2.message.DbException.get:(I[Ljava/lang/String;)Lorg/h2/message/DbException;
            athrow
        36: .line 817
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.alias:Ljava/lang/String;
            ifnull 50
        37: .line 818
            aload 1 /* builder */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        38: .line 819
            aload 1 /* builder */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.alias:Ljava/lang/String;
            iload 3 /* alwaysQuote */
            invokestatic org.h2.command.Parser.quoteIdentifier:(Ljava/lang/StringBuilder;Ljava/lang/String;Z)Ljava/lang/StringBuilder;
            pop
        39: .line 820
            aload 0 /* this */
            getfield org.h2.table.TableFilter.derivedColumnMap:Ljava/util/LinkedHashMap;
            ifnull 50
        40: .line 821
            aload 1 /* builder */
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        41: .line 822
            iconst_0
            istore 4 /* f */
        start local 4 // boolean f
        42: .line 823
            aload 0 /* this */
            getfield org.h2.table.TableFilter.derivedColumnMap:Ljava/util/LinkedHashMap;
            invokevirtual java.util.LinkedHashMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 48
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int int top java.util.Iterator
      StackMap stack:
        43: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* name */
        start local 5 // java.lang.String name
        44: .line 824
            iload 4 /* f */
            ifeq 46
        45: .line 825
            aload 1 /* builder */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        46: .line 827
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int int java.lang.String java.util.Iterator
      StackMap stack:
            iconst_1
            istore 4 /* f */
        47: .line 828
            aload 1 /* builder */
            aload 5 /* name */
            iload 3 /* alwaysQuote */
            invokestatic org.h2.command.Parser.quoteIdentifier:(Ljava/lang/StringBuilder;Ljava/lang/String;Z)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.lang.String name
        48: .line 823
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int int top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 43
        49: .line 830
            aload 1 /* builder */
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 4 // boolean f
        50: .line 833
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexHints:Lorg/h2/table/IndexHints;
            ifnull 62
        51: .line 834
            aload 1 /* builder */
            ldc " USE INDEX ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        52: .line 835
            iconst_1
            istore 4 /* first */
        start local 4 // boolean first
        53: .line 836
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexHints:Lorg/h2/table/IndexHints;
            invokevirtual org.h2.table.IndexHints.getAllowedIndexes:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 60
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int int top java.util.Iterator
      StackMap stack:
        54: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* index */
        start local 5 // java.lang.String index
        55: .line 837
            iload 4 /* first */
            ifne 58
        56: .line 838
            aload 1 /* builder */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        57: .line 839
            goto 59
        58: .line 840
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int int java.lang.String java.util.Iterator
      StackMap stack:
            iconst_0
            istore 4 /* first */
        59: .line 842
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            aload 5 /* index */
            iload 3 /* alwaysQuote */
            invokestatic org.h2.command.Parser.quoteIdentifier:(Ljava/lang/StringBuilder;Ljava/lang/String;Z)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.lang.String index
        60: .line 836
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int int top java.util.Iterator
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 54
        61: .line 844
            aload 1 /* builder */
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // boolean first
        62: .line 846
      StackMap locals: org.h2.table.TableFilter java.lang.StringBuilder int int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            ifnull 88
        63: .line 847
            aload 1 /* builder */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        64: .line 848
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 4 /* planBuilder */
        start local 4 // java.lang.StringBuilder planBuilder
        65: .line 849
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            ifnull 71
        66: .line 850
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinFilterId:I
            invokevirtual org.h2.table.JoinBatch.getLookupBatch:(I)Lorg/h2/index/IndexLookupBatch;
            astore 5 /* lookupBatch */
        start local 5 // org.h2.index.IndexLookupBatch lookupBatch
        67: .line 851
            aload 5 /* lookupBatch */
            ifnonnull 70
        68: .line 852
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinFilterId:I
            ifeq 71
        69: .line 853
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinFilterId:I
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            invokestatic org.h2.message.DbException.throwInternalError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        70: .line 856
      StackMap locals: java.lang.StringBuilder org.h2.index.IndexLookupBatch
      StackMap stack:
            aload 4 /* planBuilder */
            ldc "batched:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* lookupBatch */
            invokeinterface org.h2.index.IndexLookupBatch.getPlanSQL:()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
        end local 5 // org.h2.index.IndexLookupBatch lookupBatch
        71: .line 859
      StackMap locals:
      StackMap stack:
            aload 4 /* planBuilder */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            invokeinterface org.h2.index.Index.getPlanSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        72: .line 860
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.isEmpty:()Z
            ifne 82
        73: .line 861
            aload 4 /* planBuilder */
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        74: .line 862
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        75: aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            istore 6 /* size */
        start local 6 // int size
        76: goto 81
        77: .line 863
      StackMap locals: int int
      StackMap stack:
            iload 5 /* i */
            ifle 79
        78: .line 864
            aload 4 /* planBuilder */
            ldc "\n    AND "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        79: .line 866
      StackMap locals:
      StackMap stack:
            aload 4 /* planBuilder */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            iload 5 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.index.IndexCondition
            iconst_0
            invokevirtual org.h2.index.IndexCondition.getSQL:(Z)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        80: .line 862
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        81: iload 5 /* i */
            iload 6 /* size */
            if_icmplt 77
        end local 6 // int size
        end local 5 // int i
        82: .line 869
      StackMap locals:
      StackMap stack:
            aload 4 /* planBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.h2.util.StringUtils.quoteRemarkSQL:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* plan */
        start local 5 // java.lang.String plan
        83: .line 870
            aload 4 /* planBuilder */
            iconst_0
            invokevirtual java.lang.StringBuilder.setLength:(I)V
        84: .line 871
            aload 4 /* planBuilder */
            ldc "/* "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* plan */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        85: .line 872
            aload 5 /* plan */
            bipush 10
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 87
        86: .line 873
            aload 4 /* planBuilder */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        87: .line 875
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* builder */
            aload 4 /* planBuilder */
            ldc " */"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_4
            iconst_0
            invokestatic org.h2.util.StringUtils.indent:(Ljava/lang/StringBuilder;Ljava/lang/String;IZ)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.lang.String plan
        end local 4 // java.lang.StringBuilder planBuilder
        88: .line 877
      StackMap locals:
      StackMap stack:
            iload 2 /* isJoin */
            ifeq 94
        89: .line 878
            aload 1 /* builder */
            ldc "\n    ON "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        90: .line 879
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            ifnonnull 93
        91: .line 882
            aload 1 /* builder */
            ldc "1=1"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        92: .line 883
            goto 94
        93: .line 884
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 1 /* builder */
            iload 3 /* alwaysQuote */
            invokevirtual org.h2.expression.Expression.getUnenclosedSQL:(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
            pop
        94: .line 887
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            ifnull 99
        95: .line 888
            aload 1 /* builder */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        96: .line 889
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            iconst_0
            invokevirtual org.h2.expression.Expression.getSQL:(Z)Ljava/lang/String;
            invokestatic org.h2.util.StringUtils.unEnclose:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* condition */
        start local 4 // java.lang.String condition
        97: .line 890
            new java.lang.StringBuilder
            dup
            ldc "/* WHERE "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* condition */
            invokestatic org.h2.util.StringUtils.quoteRemarkSQL:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n*/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* condition */
        98: .line 891
            aload 1 /* builder */
            aload 4 /* condition */
            iconst_4
            iconst_0
            invokestatic org.h2.util.StringUtils.indent:(Ljava/lang/StringBuilder;Ljava/lang/String;IZ)Ljava/lang/StringBuilder;
            pop
        end local 4 // java.lang.String condition
        99: .line 893
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.scanCount:I
            ifle 101
       100: .line 894
            aload 1 /* builder */
            ldc "\n    /* scanCount: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.scanCount:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " */"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       101: .line 896
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            areturn
        end local 3 // boolean alwaysQuote
        end local 2 // boolean isJoin
        end local 1 // java.lang.StringBuilder builder
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0  102     0         this  Lorg/h2/table/TableFilter;
            0  102     1      builder  Ljava/lang/StringBuilder;
            0  102     2       isJoin  Z
            0  102     3  alwaysQuote  Z
            7   29     4   buffNested  Ljava/lang/StringBuilder;
            8   29     5            n  Lorg/h2/table/TableFilter;
           14   29     6       nested  Ljava/lang/String;
           17   29     7      enclose  Z
           42   50     4            f  Z
           44   48     5         name  Ljava/lang/String;
           53   62     4        first  Z
           55   60     5        index  Ljava/lang/String;
           65   88     4  planBuilder  Ljava/lang/StringBuilder;
           67   71     5  lookupBatch  Lorg/h2/index/IndexLookupBatch;
           75   82     5            i  I
           76   82     6         size  I
           83   88     5         plan  Ljava/lang/String;
           97   99     4    condition  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      builder      
      isJoin       
      alwaysQuote  

  void removeUnusableIndexConditions();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 904
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 6
         2: .line 905
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            iload 1 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast org.h2.index.IndexCondition
            astore 2 /* cond */
        start local 2 // org.h2.index.IndexCondition cond
         3: .line 906
            aload 2 /* cond */
            invokevirtual org.h2.index.IndexCondition.isEvaluatable:()Z
            ifne 5
         4: .line 907
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            iload 1 /* i */
            iinc 1 /* i */ -1
            invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
            pop
        end local 2 // org.h2.index.IndexCondition cond
         5: .line 904
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 1 /* i */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            if_icmplt 2
        end local 1 // int i
         7: .line 910
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/h2/table/TableFilter;
            1    7     1     i  I
            3    5     2  cond  Lorg/h2/index/IndexCondition;

  public int[] getMasks();
    descriptor: ()[I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 913
            aload 0 /* this */
            getfield org.h2.table.TableFilter.masks:[I
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public java.util.ArrayList<org.h2.index.IndexCondition> getIndexConditions();
    descriptor: ()Ljava/util/ArrayList;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 917
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;
    Signature: ()Ljava/util/ArrayList<Lorg/h2/index/IndexCondition;>;

  public org.h2.index.Index getIndex();
    descriptor: ()Lorg/h2/index/Index;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 921
            aload 0 /* this */
            getfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public void setIndex(org.h2.index.Index);
    descriptor: (Lorg/h2/index/Index;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.index.Index index
         0: .line 925
            aload 0 /* this */
            aload 1 /* index */
            putfield org.h2.table.TableFilter.index:Lorg/h2/index/Index;
         1: .line 926
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            aload 1 /* index */
            invokevirtual org.h2.index.IndexCursor.setIndex:(Lorg/h2/index/Index;)V
         2: .line 927
            return
        end local 1 // org.h2.index.Index index
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/h2/table/TableFilter;
            0    3     1  index  Lorg/h2/index/Index;
    MethodParameters:
       Name  Flags
      index  

  public void setUsed(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // boolean used
         0: .line 930
            aload 0 /* this */
            iload 1 /* used */
            putfield org.h2.table.TableFilter.used:Z
         1: .line 931
            return
        end local 1 // boolean used
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;
            0    2     1  used  Z
    MethodParameters:
      Name  Flags
      used  

  public boolean isUsed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 934
            aload 0 /* this */
            getfield org.h2.table.TableFilter.used:Z
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  void setSession(org.h2.engine.Session);
    descriptor: (Lorg/h2/engine/Session;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.engine.Session session
         0: .line 943
            aload 0 /* this */
            aload 1 /* session */
            putfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
         1: .line 944
            return
        end local 1 // org.h2.engine.Session session
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/h2/table/TableFilter;
            0    2     1  session  Lorg/h2/engine/Session;
    MethodParameters:
         Name  Flags
      session  

  public void removeJoin();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 950
            aload 0 /* this */
            aconst_null
            putfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
         1: .line 951
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;

  public org.h2.expression.Expression getJoinCondition();
    descriptor: ()Lorg/h2/expression/Expression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 954
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public void removeJoinCondition();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 961
            aload 0 /* this */
            aconst_null
            putfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
         1: .line 962
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;

  public org.h2.expression.Expression getFilterCondition();
    descriptor: ()Lorg/h2/expression/Expression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 965
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public void removeFilterCondition();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 972
            aload 0 /* this */
            aconst_null
            putfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
         1: .line 973
            return
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;

  public void setFullCondition(org.h2.expression.Expression);
    descriptor: (Lorg/h2/expression/Expression;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.expression.Expression condition
         0: .line 976
            aload 0 /* this */
            aload 1 /* condition */
            putfield org.h2.table.TableFilter.fullCondition:Lorg/h2/expression/Expression;
         1: .line 977
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 3
         2: .line 978
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* condition */
            invokevirtual org.h2.table.TableFilter.setFullCondition:(Lorg/h2/expression/Expression;)V
         3: .line 980
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.h2.expression.Expression condition
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/h2/table/TableFilter;
            0    4     1  condition  Lorg/h2/expression/Expression;
    MethodParameters:
           Name  Flags
      condition  

  void optimizeFullCondition(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // boolean fromOuterJoin
         0: .line 989
            aload 0 /* this */
            getfield org.h2.table.TableFilter.fullCondition:Lorg/h2/expression/Expression;
            ifnull 12
         1: .line 990
            aload 0 /* this */
            getfield org.h2.table.TableFilter.fullCondition:Lorg/h2/expression/Expression;
            aload 0 /* this */
            iload 1 /* fromOuterJoin */
            ifne 2
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ifne 2
            iconst_0
            goto 3
      StackMap locals: org.h2.table.TableFilter int
      StackMap stack: org.h2.expression.Expression org.h2.table.TableFilter
         2: iconst_1
      StackMap locals: org.h2.table.TableFilter int
      StackMap stack: org.h2.expression.Expression org.h2.table.TableFilter int
         3: invokevirtual org.h2.expression.Expression.addFilterConditions:(Lorg/h2/table/TableFilter;Z)V
         4: .line 991
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 8
         5: .line 992
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            iload 1 /* fromOuterJoin */
            ifne 6
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ifne 6
            iconst_0
            goto 7
      StackMap locals:
      StackMap stack: org.h2.table.TableFilter
         6: iconst_1
      StackMap locals: org.h2.table.TableFilter int
      StackMap stack: org.h2.table.TableFilter int
         7: invokevirtual org.h2.table.TableFilter.optimizeFullCondition:(Z)V
         8: .line 994
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 12
         9: .line 995
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            iload 1 /* fromOuterJoin */
            ifne 10
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinOuter:Z
            ifne 10
            iconst_0
            goto 11
      StackMap locals:
      StackMap stack: org.h2.table.TableFilter
        10: iconst_1
      StackMap locals: org.h2.table.TableFilter int
      StackMap stack: org.h2.table.TableFilter int
        11: invokevirtual org.h2.table.TableFilter.optimizeFullCondition:(Z)V
        12: .line 998
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean fromOuterJoin
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0           this  Lorg/h2/table/TableFilter;
            0   13     1  fromOuterJoin  Z
    MethodParameters:
               Name  Flags
      fromOuterJoin  

  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.table.TableFilter this
        start local 1 // org.h2.table.TableFilter filter
        start local 2 // boolean b
         0: .line 1009
            aload 1 /* filter */
            iload 2 /* b */
            invokevirtual org.h2.table.TableFilter.setEvaluatable:(Z)V
         1: .line 1010
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            ifnull 3
         2: .line 1011
            aload 0 /* this */
            getfield org.h2.table.TableFilter.filterCondition:Lorg/h2/expression/Expression;
            aload 1 /* filter */
            iload 2 /* b */
            invokevirtual org.h2.expression.Expression.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         3: .line 1013
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            ifnull 5
         4: .line 1014
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinCondition:Lorg/h2/expression/Expression;
            aload 1 /* filter */
            iload 2 /* b */
            invokevirtual org.h2.expression.Expression.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         5: .line 1016
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            ifnull 8
         6: .line 1019
            aload 0 /* this */
            aload 1 /* filter */
            if_acmpne 8
         7: .line 1020
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            iload 2 /* b */
            invokevirtual org.h2.table.TableFilter.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
         8: .line 1023
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            ifnull 10
         9: .line 1024
            aload 0 /* this */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            aload 1 /* filter */
            iload 2 /* b */
            invokevirtual org.h2.table.TableFilter.setEvaluatable:(Lorg/h2/table/TableFilter;Z)V
        10: .line 1026
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean b
        end local 1 // org.h2.table.TableFilter filter
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lorg/h2/table/TableFilter;
            0   11     1  filter  Lorg/h2/table/TableFilter;
            0   11     2       b  Z
    MethodParameters:
        Name  Flags
      filter  
      b       

  public void setEvaluatable(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // boolean evaluatable
         0: .line 1029
            aload 0 /* this */
            iload 1 /* evaluatable */
            putfield org.h2.table.TableFilter.evaluatable:Z
         1: .line 1030
            return
        end local 1 // boolean evaluatable
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/h2/table/TableFilter;
            0    2     1  evaluatable  Z
    MethodParameters:
             Name  Flags
      evaluatable  

  public java.lang.String getSchemaName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1034
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getSchema:()Lorg/h2/schema/Schema;
            invokevirtual org.h2.schema.Schema.getName:()Ljava/lang/String;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public org.h2.table.Column[] getColumns();
    descriptor: ()[Lorg/h2/table/Column;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1039
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getColumns:()[Lorg/h2/table/Column;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public java.lang.String getDerivedColumnName(org.h2.table.Column);
    descriptor: (Lorg/h2/table/Column;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.Column column
         0: .line 1044
            aload 0 /* this */
            getfield org.h2.table.TableFilter.derivedColumnMap:Ljava/util/LinkedHashMap;
            astore 2 /* map */
        start local 2 // java.util.HashMap map
         1: .line 1045
            aload 2 /* map */
            ifnull 2
            aload 2 /* map */
            aload 1 /* column */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            goto 3
      StackMap locals: java.util.HashMap
      StackMap stack:
         2: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
         3: areturn
        end local 2 // java.util.HashMap map
        end local 1 // org.h2.table.Column column
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/h2/table/TableFilter;
            0    4     1  column  Lorg/h2/table/Column;
            1    4     2     map  Ljava/util/HashMap<Lorg/h2/table/Column;Ljava/lang/String;>;
    MethodParameters:
        Name  Flags
      column  

  public org.h2.table.Column[] getSystemColumns();
    descriptor: ()[Lorg/h2/table/Column;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1057
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            invokevirtual org.h2.engine.Session.getDatabase:()Lorg/h2/engine/Database;
            invokevirtual org.h2.engine.Database.getMode:()Lorg/h2/engine/Mode;
            getfield org.h2.engine.Mode.systemColumns:Z
            ifne 2
         1: .line 1058
            aconst_null
            areturn
         2: .line 1060
      StackMap locals:
      StackMap stack:
            iconst_3
            anewarray org.h2.table.Column
            astore 1 /* sys */
        start local 1 // org.h2.table.Column[] sys
         3: .line 1061
            aload 1 /* sys */
            iconst_0
            new org.h2.table.Column
            dup
            ldc "oid"
            iconst_4
            invokespecial org.h2.table.Column.<init>:(Ljava/lang/String;I)V
            aastore
         4: .line 1062
            aload 1 /* sys */
            iconst_0
            aaload
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            iconst_0
            invokevirtual org.h2.table.Column.setTable:(Lorg/h2/table/Table;I)V
         5: .line 1063
            aload 1 /* sys */
            iconst_1
            new org.h2.table.Column
            dup
            ldc "ctid"
            bipush 13
            invokespecial org.h2.table.Column.<init>:(Ljava/lang/String;I)V
            aastore
         6: .line 1064
            aload 1 /* sys */
            iconst_1
            aaload
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            iconst_0
            invokevirtual org.h2.table.Column.setTable:(Lorg/h2/table/Table;I)V
         7: .line 1065
            aload 1 /* sys */
            iconst_2
            new org.h2.table.Column
            dup
            ldc "CTID"
            bipush 13
            invokespecial org.h2.table.Column.<init>:(Ljava/lang/String;I)V
            aastore
         8: .line 1066
            aload 1 /* sys */
            iconst_2
            aaload
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            iconst_0
            invokevirtual org.h2.table.Column.setTable:(Lorg/h2/table/Table;I)V
         9: .line 1067
            aload 1 /* sys */
            areturn
        end local 1 // org.h2.table.Column[] sys
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/h2/table/TableFilter;
            3   10     1   sys  [Lorg/h2/table/Column;

  public org.h2.table.Column getRowIdColumn();
    descriptor: ()Lorg/h2/table/Column;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1072
            aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.getRowIdColumn:()Lorg/h2/table/Column;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public org.h2.value.Value getValue(org.h2.table.Column);
    descriptor: (Lorg/h2/table/Column;)Lorg/h2/value/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.Column column
         0: .line 1077
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            ifnull 2
         1: .line 1078
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinBatch:Lorg/h2/table/JoinBatch;
            aload 0 /* this */
            getfield org.h2.table.TableFilter.joinFilterId:I
            aload 1 /* column */
            invokevirtual org.h2.table.JoinBatch.getValue:(ILorg/h2/table/Column;)Lorg/h2/value/Value;
            areturn
         2: .line 1080
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
            ifnonnull 4
         3: .line 1081
            aconst_null
            areturn
         4: .line 1083
      StackMap locals:
      StackMap stack:
            aload 1 /* column */
            invokevirtual org.h2.table.Column.getColumnId:()I
            istore 2 /* columnId */
        start local 2 // int columnId
         5: .line 1084
            iload 2 /* columnId */
            iconst_m1
            if_icmpne 7
         6: .line 1085
            aload 0 /* this */
            getfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
            invokeinterface org.h2.result.SearchRow.getKey:()J
            invokestatic org.h2.value.ValueLong.get:(J)Lorg/h2/value/ValueLong;
            areturn
         7: .line 1087
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
            ifnonnull 14
         8: .line 1088
            aload 0 /* this */
            getfield org.h2.table.TableFilter.currentSearchRow:Lorg/h2/result/SearchRow;
            iload 2 /* columnId */
            invokeinterface org.h2.result.SearchRow.getValue:(I)Lorg/h2/value/Value;
            astore 3 /* v */
        start local 3 // org.h2.value.Value v
         9: .line 1089
            aload 3 /* v */
            ifnull 11
        10: .line 1090
            aload 3 /* v */
            areturn
        11: .line 1092
      StackMap locals: org.h2.value.Value
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.h2.table.TableFilter.cursor:Lorg/h2/index/IndexCursor;
            invokevirtual org.h2.index.IndexCursor.get:()Lorg/h2/result/Row;
            putfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
        12: .line 1093
            aload 0 /* this */
            getfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
            ifnonnull 14
        13: .line 1094
            getstatic org.h2.value.ValueNull.INSTANCE:Lorg/h2/value/ValueNull;
            areturn
        end local 3 // org.h2.value.Value v
        14: .line 1097
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.current:Lorg/h2/result/Row;
            iload 2 /* columnId */
            invokeinterface org.h2.result.Row.getValue:(I)Lorg/h2/value/Value;
            areturn
        end local 2 // int columnId
        end local 1 // org.h2.table.Column column
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/h2/table/TableFilter;
            0   15     1    column  Lorg/h2/table/Column;
            5   15     2  columnId  I
            9   14     3         v  Lorg/h2/value/Value;
    MethodParameters:
        Name  Flags
      column  

  public org.h2.table.TableFilter getTableFilter();
    descriptor: ()Lorg/h2/table/TableFilter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1102
            aload 0 /* this */
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public void setAlias(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // java.lang.String alias
         0: .line 1106
            aload 0 /* this */
            aload 1 /* alias */
            putfield org.h2.table.TableFilter.alias:Ljava/lang/String;
         1: .line 1107
            return
        end local 1 // java.lang.String alias
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/h2/table/TableFilter;
            0    2     1  alias  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      alias  

  public void setDerivedColumns(java.util.ArrayList<java.lang.String>);
    descriptor: (Ljava/util/ArrayList;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // java.util.ArrayList derivedColumnNames
         0: .line 1115
            aload 0 /* this */
            invokevirtual org.h2.table.TableFilter.getColumns:()[Lorg/h2/table/Column;
            astore 2 /* columns */
        start local 2 // org.h2.table.Column[] columns
         1: .line 1116
            aload 2 /* columns */
            arraylength
            istore 3 /* count */
        start local 3 // int count
         2: .line 1117
            iload 3 /* count */
            aload 1 /* derivedColumnNames */
            invokevirtual java.util.ArrayList.size:()I
            if_icmpeq 4
         3: .line 1118
            sipush 21002
            invokestatic org.h2.message.DbException.get:(I)Lorg/h2/message/DbException;
            athrow
         4: .line 1120
      StackMap locals: org.h2.table.Column[] int
      StackMap stack:
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            astore 4 /* map */
        start local 4 // java.util.LinkedHashMap map
         5: .line 1121
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         6: goto 16
         7: .line 1122
      StackMap locals: java.util.LinkedHashMap int
      StackMap stack:
            aload 1 /* derivedColumnNames */
            iload 5 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* alias */
        start local 6 // java.lang.String alias
         8: .line 1123
            iconst_0
            istore 7 /* j */
        start local 7 // int j
         9: goto 13
        10: .line 1124
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 6 /* alias */
            aload 1 /* derivedColumnNames */
            iload 7 /* j */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
        11: .line 1125
            ldc 42121
            aload 6 /* alias */
            invokestatic org.h2.message.DbException.get:(ILjava/lang/String;)Lorg/h2/message/DbException;
            athrow
        12: .line 1123
      StackMap locals:
      StackMap stack:
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        13: iload 7 /* j */
            iload 5 /* i */
            if_icmplt 10
        end local 7 // int j
        14: .line 1128
            aload 4 /* map */
            aload 2 /* columns */
            iload 5 /* i */
            aaload
            aload 6 /* alias */
            invokevirtual java.util.LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.lang.String alias
        15: .line 1121
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 5 /* i */
            iload 3 /* count */
            if_icmplt 7
        end local 5 // int i
        17: .line 1130
            aload 0 /* this */
            aload 4 /* map */
            putfield org.h2.table.TableFilter.derivedColumnMap:Ljava/util/LinkedHashMap;
        18: .line 1131
            return
        end local 4 // java.util.LinkedHashMap map
        end local 3 // int count
        end local 2 // org.h2.table.Column[] columns
        end local 1 // java.util.ArrayList derivedColumnNames
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   19     0                this  Lorg/h2/table/TableFilter;
            0   19     1  derivedColumnNames  Ljava/util/ArrayList<Ljava/lang/String;>;
            1   19     2             columns  [Lorg/h2/table/Column;
            2   19     3               count  I
            5   19     4                 map  Ljava/util/LinkedHashMap<Lorg/h2/table/Column;Ljava/lang/String;>;
            6   17     5                   i  I
            8   15     6               alias  Ljava/lang/String;
            9   14     7                   j  I
    Signature: (Ljava/util/ArrayList<Ljava/lang/String;>;)V
    MethodParameters:
                    Name  Flags
      derivedColumnNames  

  public org.h2.expression.Expression optimize(org.h2.expression.ExpressionColumn, org.h2.table.Column);
    descriptor: (Lorg/h2/expression/ExpressionColumn;Lorg/h2/table/Column;)Lorg/h2/expression/Expression;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.expression.ExpressionColumn expressionColumn
        start local 2 // org.h2.table.Column column
         0: .line 1135
            aload 1 /* expressionColumn */
            areturn
        end local 2 // org.h2.table.Column column
        end local 1 // org.h2.expression.ExpressionColumn expressionColumn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lorg/h2/table/TableFilter;
            0    1     1  expressionColumn  Lorg/h2/expression/ExpressionColumn;
            0    1     2            column  Lorg/h2/table/Column;
    MethodParameters:
                  Name  Flags
      expressionColumn  
      column            

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1140
            aload 0 /* this */
            getfield org.h2.table.TableFilter.alias:Ljava/lang/String;
            ifnull 1
            aload 0 /* this */
            getfield org.h2.table.TableFilter.alias:Ljava/lang/String;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield org.h2.table.TableFilter.table:Lorg/h2/table/Table;
            invokevirtual org.h2.table.Table.toString:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/table/TableFilter;

  public void addNaturalJoinColumn(org.h2.table.Column);
    descriptor: (Lorg/h2/table/Column;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.Column c
         0: .line 1149
            aload 0 /* this */
            getfield org.h2.table.TableFilter.naturalJoinColumns:Ljava/util/ArrayList;
            ifnonnull 2
         1: .line 1150
            aload 0 /* this */
            invokestatic org.h2.util.Utils.newSmallArrayList:()Ljava/util/ArrayList;
            putfield org.h2.table.TableFilter.naturalJoinColumns:Ljava/util/ArrayList;
         2: .line 1152
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.table.TableFilter.naturalJoinColumns:Ljava/util/ArrayList;
            aload 1 /* c */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         3: .line 1153
            return
        end local 1 // org.h2.table.Column c
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/h2/table/TableFilter;
            0    4     1     c  Lorg/h2/table/Column;
    MethodParameters:
      Name  Flags
      c     

  public boolean isNaturalJoinColumn(org.h2.table.Column);
    descriptor: (Lorg/h2/table/Column;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.Column c
         0: .line 1162
            aload 0 /* this */
            getfield org.h2.table.TableFilter.naturalJoinColumns:Ljava/util/ArrayList;
            ifnull 1
            aload 0 /* this */
            getfield org.h2.table.TableFilter.naturalJoinColumns:Ljava/util/ArrayList;
            aload 1 /* c */
            invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.h2.table.Column c
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/table/TableFilter;
            0    2     1     c  Lorg/h2/table/Column;
    MethodParameters:
      Name  Flags
      c     

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1167
            aload 0 /* this */
            getfield org.h2.table.TableFilter.hashCode:I
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public boolean hasInComparisons();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1176
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexConditions:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: org.h2.table.TableFilter top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.h2.index.IndexCondition
            astore 1 /* cond */
        start local 1 // org.h2.index.IndexCondition cond
         2: .line 1177
            aload 1 /* cond */
            invokevirtual org.h2.index.IndexCondition.getCompareType:()I
            istore 3 /* compareType */
        start local 3 // int compareType
         3: .line 1178
            iload 3 /* compareType */
            bipush 10
            if_icmpeq 4
            iload 3 /* compareType */
            bipush 9
            if_icmpne 5
         4: .line 1179
      StackMap locals: org.h2.table.TableFilter org.h2.index.IndexCondition java.util.Iterator int
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // int compareType
        end local 1 // org.h2.index.IndexCondition cond
         5: .line 1176
      StackMap locals: org.h2.table.TableFilter top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 1182
            iconst_0
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lorg/h2/table/TableFilter;
            2    5     1         cond  Lorg/h2/index/IndexCondition;
            3    5     3  compareType  I

  public void lockRowAdd(java.util.ArrayList<org.h2.result.Row>);
    descriptor: (Ljava/util/ArrayList;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // java.util.ArrayList rows
         0: .line 1191
            aload 0 /* this */
            getfield org.h2.table.TableFilter.state:I
            iconst_1
            if_icmpne 2
         1: .line 1192
            aload 1 /* rows */
            aload 0 /* this */
            invokevirtual org.h2.table.TableFilter.get:()Lorg/h2/result/Row;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 1194
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.ArrayList rows
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/h2/table/TableFilter;
            0    3     1  rows  Ljava/util/ArrayList<Lorg/h2/result/Row;>;
    Signature: (Ljava/util/ArrayList<Lorg/h2/result/Row;>;)V
    MethodParameters:
      Name  Flags
      rows  

  public org.h2.table.TableFilter getNestedJoin();
    descriptor: ()Lorg/h2/table/TableFilter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1197
            aload 0 /* this */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public void visit(org.h2.table.TableFilter$TableFilterVisitor);
    descriptor: (Lorg/h2/table/TableFilter$TableFilterVisitor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.h2.table.TableFilter this
        start local 1 // org.h2.table.TableFilter$TableFilterVisitor visitor
         0: .line 1206
            aload 0 /* this */
            astore 2 /* f */
        start local 2 // org.h2.table.TableFilter f
         1: .line 1208
      StackMap locals: org.h2.table.TableFilter
      StackMap stack:
            aload 1 /* visitor */
            aload 2 /* f */
            invokeinterface org.h2.table.TableFilter$TableFilterVisitor.accept:(Lorg/h2/table/TableFilter;)V
         2: .line 1209
            aload 2 /* f */
            getfield org.h2.table.TableFilter.nestedJoin:Lorg/h2/table/TableFilter;
            astore 3 /* n */
        start local 3 // org.h2.table.TableFilter n
         3: .line 1210
            aload 3 /* n */
            ifnull 5
         4: .line 1211
            aload 3 /* n */
            aload 1 /* visitor */
            invokevirtual org.h2.table.TableFilter.visit:(Lorg/h2/table/TableFilter$TableFilterVisitor;)V
         5: .line 1213
      StackMap locals: org.h2.table.TableFilter
      StackMap stack:
            aload 2 /* f */
            getfield org.h2.table.TableFilter.join:Lorg/h2/table/TableFilter;
            astore 2 /* f */
        end local 3 // org.h2.table.TableFilter n
         6: .line 1214
            aload 2 /* f */
            ifnonnull 1
         7: .line 1215
            return
        end local 2 // org.h2.table.TableFilter f
        end local 1 // org.h2.table.TableFilter$TableFilterVisitor visitor
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/h2/table/TableFilter;
            0    8     1  visitor  Lorg/h2/table/TableFilter$TableFilterVisitor;
            1    8     2        f  Lorg/h2/table/TableFilter;
            3    6     3        n  Lorg/h2/table/TableFilter;
    MethodParameters:
         Name  Flags
      visitor  

  public boolean isEvaluatable();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1218
            aload 0 /* this */
            getfield org.h2.table.TableFilter.evaluatable:Z
            ireturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public org.h2.engine.Session getSession();
    descriptor: ()Lorg/h2/engine/Session;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1222
            aload 0 /* this */
            getfield org.h2.table.TableFilter.session:Lorg/h2/engine/Session;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;

  public org.h2.table.IndexHints getIndexHints();
    descriptor: ()Lorg/h2/table/IndexHints;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.h2.table.TableFilter this
         0: .line 1226
            aload 0 /* this */
            getfield org.h2.table.TableFilter.indexHints:Lorg/h2/table/IndexHints;
            areturn
        end local 0 // org.h2.table.TableFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/table/TableFilter;
}
SourceFile: "TableFilter.java"
NestMembers:
  org.h2.table.TableFilter$1  org.h2.table.TableFilter$JOIVisitor  org.h2.table.TableFilter$MapColumnsVisitor  org.h2.table.TableFilter$TableFilterVisitor
InnerClasses:
  org.h2.table.TableFilter$1
  private final JOIVisitor = org.h2.table.TableFilter$JOIVisitor of org.h2.table.TableFilter
  private final MapColumnsVisitor = org.h2.table.TableFilter$MapColumnsVisitor of org.h2.table.TableFilter
  public abstract TableFilterVisitor = org.h2.table.TableFilter$TableFilterVisitor of org.h2.table.TableFilter