class Projection {

    @Override
    public String toString() {
        String str;
        if (!StringUtils.isEmpty(functionName)) {
            str = toExpr(true);
        } else if (!StringUtils.isEmpty(expr)) {
            str = quoteAlias(expr);
        } else {
            throw new IllegalArgumentException("expr or functionName should be specified");
        }
        return str;
    }

    public  Projection();
    public  Projection(Projection other);
    public  Projection(String expr, String functionName, List<String> args, String outputFieldName);

}