docs: public void set(String name, String value, String source) {
      Preconditions.checkArgument(
          name != null,
          "Property name must not be null");
      Preconditions.checkArgument(
          value != null,
          "The value of property " + name + " must not be null");
      name = name.trim();
      DeprecationContext deprecations = deprecationContext.get();
      if (deprecations.getDeprecatedKeyMap().isEmpty()) {
        getProps();
      }
      getOverlay().setProperty(name, value);
      getProps().setProperty(name, value);
      String newSource = (source == null ? "programatically" : source);
  
      if (!isDeprecated(name)) {
        updatingResource.put(name, new String[] {newSource});
        String[] altNames = getAlternativeNames(name);
        if(altNames != null) {
          for(String n: altNames) {
            if(!n.equals(name)) {
              getOverlay().setProperty(n, value);
              getProps().setProperty(n, value);
              updatingResource.put(n, new String[] {newSource});
            }
          }
        }
      }
      else {
        String[] names = handleDeprecation(deprecationContext.get(), name);
        String altSource = "because " + name + " is deprecated";
        for(String n : names) {
          getOverlay().setProperty(n, value);
          getProps().setProperty(n, value);
          updatingResource.put(n, new String[] {altSource});
        }
      }
    }