code: protected String resolveExpressionBlock(String expression, EvaluationContext context, boolean urlEncode, EvaluationStrategy strategy, List<String> errors) {
          try {
              String body = expression.substring(1); // strip prefix
  
              // if expression doesn't start with ( then check it's an allowed top level context reference
              if (!body.startsWith("(")) {
                  String topLevel = StringUtils.split(body, '.')[0].toLowerCase();
                  if (!m_allowedTopLevels.contains(topLevel)) {
                      return expression;
                  }
              }
  
              Object evaluated = evaluateExpression(body, context, strategy);
  
              String rendered = Conversions.toString(evaluated, context); // render result as string
              return urlEncode ? ExpressionUtils.urlquote(rendered) : rendered;
          }
          catch (EvaluationError ex) {
              logger.debug("Unable to evaluate expression", ex);
              errors.add(ex.getMessage());
  
              return expression; // if we can't evaluate expression, include it as is in the output
          }
      }
docs: Resolves an expression block found in the template, e.g. @(...). If an evaluation error occurs, expression is
  returned as is.