code: protected String escapeObjectName(ObjectName objectName) {
          StringBuilder result = new StringBuilder();
          appendEscapedNonAlphaNumericChars(objectName.getDomain(), result);
          result.append('.');
          List<String> keys = Collections.list(objectName.getKeyPropertyList().keys());
          Collections.sort(keys);
          for (Iterator<String> it = keys.iterator(); it.hasNext(); ) {
              String key = it.next();
              appendEscapedNonAlphaNumericChars(key, result);
              result.append("__");
              appendEscapedNonAlphaNumericChars(objectName.getKeyProperty(key), result);
              if (it.hasNext()) {
                  result.append('.');
              }
          }
          logger.trace("escapeObjectName({}): {}", objectName, result);
          return result.toString();
      }
docs: Transforms an {@linkplain ObjectName} into a plain {@linkplain String} only composed of (a-z, A-Z, '_').
  
  '_' is the escape char for not compliant chars.