code: public static Parser<Relation> query() {
      Parser.Reference<Relation> relationRef = Parser.newReference();
      Parser<Relation> subQuery = ExpressionParser.paren(relationRef.lazy());
      Parser.Reference<Expression> conditionRef = Parser.newReference();
      Parser<Expression> expr = ExpressionParser.expression(conditionRef.lazy());
      Parser<Expression> cond = ExpressionParser.condition(expr, subQuery);
      Parser<Relation> relation = query(expr, cond, subQuery.or(TABLE));
      conditionRef.set(cond);
      relationRef.set(relation);
      return relation;
    }
docs: The {@link Parser} for a full fledged SQL query.