@Override
 public T evaluate(IExpressionContext<T> context) throws ExpressionEvaluationException {
   T exprResult = operand.evaluate(context.populateContext());
   IExpressionSupport<T> expressionSupport = context.getExpressionSupport();
   switch (type) {
     case NOT:
       return expressionSupport.not(exprResult);
     case IS_NULL:
       return expressionSupport.isNull(exprResult);
     case IS_NOT_NULL:
       return expressionSupport.isNotNull(exprResult);
   }
   throw new ExpressionEvaluationException(
       "Wrong expression type = [" + type + "] for unary expression.");
 }
 @Override
 public T evaluate(IExpressionContext<T> context) throws ExpressionEvaluationException {
   IExpressionSupport<T> expressionSupport = context.getExpressionSupport();
   return expressionSupport.identifier(parentEntity, identifiedField, alias);
 }