docs: private String processExpression(String expressionString) {
      expressionString = expressionString == null ? "" : expressionString.trim();
      if (expressionString.isEmpty()) {
        if (isAttributeBinding(currentAttribute)) {
          logger.error(
              "Empty expression in template property binding. If you want to pass an empty string then simply don't use binding: my-attribute=\"\"",
              currentAttribute.toString());
        } else if (isEventBinding(currentAttribute)) {
          logger.error("Empty expression in template event binding.",
              currentAttribute.toString());
        } else {
          return "";
        }
      }
  
      if (expressionString.startsWith("{")) {
        logger.error(
            "Object literal syntax are not supported yet in Vue GWT, please use map(e(\"key1\", myValue), e(\"key2\", myValue2 > 5)...) instead. The object returned by map() is a regular Javascript Object (JsObject) with the given key/values.",
            expressionString);
      }
  
      if (expressionString.startsWith("[")) {
        logger.error(
            "Array literal syntax are not supported yet in Vue GWT, please use array(myValue, myValue2 > 5...) instead. The object returned by array() is a regular Javascript Array (JsArray) with the given values.",
            expressionString);
      }
  
      if (shouldSkipExpressionProcessing(expressionString)) {
        return expressionString;
      }
  
      return processJavaExpression(expressionString).toTemplateString();
    }