translatePredicate(and.getLeft(), tableName, where);
where.and();
translatePredicate(and.getRight(), tableName, where);
where.closeParen();
} else if (predicate instanceof Or) {
Or or = (Or)predicate;
where = where.openParen();
translatePredicate(or.getLeft(), tableName, where);
where.or();
translatePredicate(or.getRight(), tableName, where);
where.closeParen();
} else if (predicate instanceof Union) {
Union union = (Union)predicate;
where = where.openParen();
translatePredicate(union.getLeft(), tableName, where);