*/
    public static ExpressionDefinition toExpressionDefinition(Predicate predicate) {
        if (predicate instanceof SimpleBuilder) {
            SimpleBuilder builder = (SimpleBuilder) predicate;
            // we keep the original expression by using the constructor that accepts an expression
            SimpleExpression answer = new SimpleExpression(builder);
            answer.setExpression(builder.getText());
            return answer;
        } else if (predicate instanceof XPathBuilder) {
            XPathBuilder builder = (XPathBuilder) predicate;
            // we keep the original expression by using the constructor that accepts an expression
            XPathExpression answer = new XPathExpression(builder);
            answer.setExpression(builder.getText());
            return answer;
        }
        if (predicate instanceof ExpressionDefinition) {
            return (ExpressionDefinition) predicate;