cdm/src/main/java/ucar/util/prefs/PreferencesExt.java
protected void putSpi(String key,  String newValue) {
      // if matches a stored Default, dont store
      String oldValue = getSpi(key);
      if ((oldValue == null) || !oldValue.equals( newValue))
        keyValues.put( key, newValue);
    }
protected void putSpi(String key,  String newValue) {
      // if matches a stored Default, dont store
      String oldValue = getSpi(key);
      if ((oldValue == null) || !oldValue.equals( newValue))
        keyValues.put( key, newValue);
    }
/* Stores the value with this key, if not already in storedDefaults.

Put the given key-value association into this preference node. It is guaranteed
that key and value are non-null and of legal length. Also, it is guaranteed
that this node has not been removed. (The implementor needn't check for any of these things.)
This method is invoked with the lock on this node held.