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);
    }
  }
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 ) ; } }
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