code: @InterfaceAudience.Public
      public void setUserProperties(Map<String, Object> userProperties) {
          Map<String, Object> newProps = new HashMap<String, Object>();
          newProps.putAll(userProperties);
          for (String key : properties.keySet()) {
              if (key.startsWith("_")) {
                  newProps.put(key, properties.get(key));  // Preserve metadata properties
              }
          }
          properties = newProps;
      }
docs: Sets the userProperties of the Revision.
  Set replaces all properties except for those with keys prefixed with '_'.