public Expression createLogicalComplementExpression(
     final String name, final Expression expression) throws InvalidExpressionException {
   createNewInstance(name)
       .setExpressionType(ExpressionType.TYPE_CONDITION)
       .setReturnType(Boolean.class.getName())
       .setContent(NOT_COMPARATOR);
   setDependencies(Collections.singletonList(expression));
   return done();
 }
 public Expression createExpression(
     final String name,
     final String content,
     final ExpressionType type,
     final String returnType,
     final String interpreter,
     final List<Expression> dependencies)
     throws InvalidExpressionException {
   createNewInstance(name).setContent(content).setExpressionType(type).setReturnType(returnType);
   if (interpreter == null) {
     setInterpreter("NONE"); // interpreter,ExpressionInterpreter.GROOVY.toString()
   } else {
     setInterpreter(interpreter);
   }
   if (dependencies == null) {
     setDependencies(new ArrayList<Expression>());
   } else {
     setDependencies(dependencies);
   }
   return done();
 }
 /**
  * Create an expression to call a simple Java method (without parameters)
  *
  * @param name the expression name
  * @param methodName the name of method to call
  * @param returnType the method return type
  * @param entityExpression the expression representing the entity (Java Object) where the method
  *     will be called
  * @return the created expression
  * @throws InvalidExpressionException if the created expression is invalid
  * @since 6.0
  */
 public Expression createJavaMethodCallExpression(
     final String name,
     final String methodName,
     final String returnType,
     final Expression entityExpression)
     throws InvalidExpressionException {
   createNewInstance(name)
       .setExpressionType(ExpressionType.TYPE_JAVA_METHOD_CALL)
       .setReturnType(returnType)
       .setContent(methodName);
   setDependencies(Collections.singletonList(entityExpression));
   return done();
 }
 public Expression createComparisonExpression(
     final String name,
     final Expression leftOperand,
     final String operator,
     final Expression rightOperand)
     throws InvalidExpressionException {
   createNewInstance(name)
       .setExpressionType(ExpressionType.TYPE_CONDITION)
       .setReturnType(Boolean.class.getName())
       .setContent(operator);
   final List<Expression> dependencies = new ArrayList<Expression>(2);
   dependencies.add(leftOperand);
   dependencies.add(rightOperand);
   setDependencies(dependencies);
   return done();
 }
 public Expression createXPathExpression(
     final String name,
     final String xPathExpression,
     final XPathReturnType returnType,
     final String xmlContent)
     throws InvalidExpressionException {
   final ExpressionBuilder expBuilder =
       createNewInstance(name)
           .setExpressionType(ExpressionType.TYPE_XPATH_READ)
           .setContent(xPathExpression);
   getXPathReturnType(returnType, expBuilder);
   final Expression dep =
       new ExpressionBuilder()
           .createNewInstance("xmlContent")
           .setContent(xmlContent)
           .setExpressionType(ExpressionType.TYPE_CONSTANT)
           .setReturnType(String.class.getName())
           .done();
   expBuilder.setDependencies(Arrays.asList(dep));
   return expBuilder.done();
 }