code: public void put(PropertyKey key, String value, Source source) {
      if (!mUserProps.containsKey(key) || source.compareTo(getSource(key)) >= 0) {
        mUserProps.put(key, Optional.ofNullable(value));
        mSources.put(key, source);
      }
    }
docs: Puts the key value pair specified by users.
  
  @param key key to put
  @param value value to put
  @param source the source of this value for the key