/// <summary>
        /// Evaluate the specified expression, for the given element and model.
        /// </summary>
        /// <param name="expression">The expression to evaluate.</param>
        /// <param name="context">The rendering context for the expression being evaluated.</param>
        /// <param name="model">The ZPT model, providing the context for evaluation.</param>
        public override ExpressionResult Evaluate(Expression expression, IRenderingContext context, ITalesModel model)
        {
            object result;

              try
              {
            result = _host.Evaluate(expression.Content,  model.GetAllDefinitions());
              }
              catch(Exception ex)
              {
            string message = String.Format(Resources.ExceptionMessages.EvaluationFailureFormat, expression.Content);
            throw new ModelEvaluationException(message, ex);
              }

              return new ExpressionResult(result);
        }
        /// <summary>
        /// Evaluate the specified expression, for the given element and model.
        /// </summary>
        /// <param name="expression">The expression to evaluate.</param>
        /// <param name="context">The rendering context for the expression being evaluated.</param>
        /// <param name="model">The ZPT model, providing the context for evaluation.</param>
        public override ExpressionResult Evaluate(Expression expression, IRenderingContext context, ITalesModel model)
        {
            if(expression == null)
              {
            throw new ArgumentNullException(nameof(expression));
              }
              if(context == null)
              {
            throw new ArgumentNullException(nameof(context));
              }
              if(model == null)
              {
            throw new ArgumentNullException(nameof(model));
              }

              var expressionText = expression.Content;
              var allDefinitions = model.GetAllDefinitions();

              var csharpExpression = _expressionService.GetExpression(expressionText, allDefinitions.Keys);

              return new ExpressionResult(csharpExpression.Evaluate(allDefinitions));
        }