cdm/src/main/java/ucar/util/prefs/PreferencesExt.java
protected String[] keysSpi() throws BackingStoreException{
      HashSet allKeys = new HashSet(keyValues.keySet());
      //show( "allKeys1 ", allKeys);

      PreferencesExt sd = getStoredDefaults();
      if (sd != null)
        allKeys.addAll(  sd.keysSpi(absolutePath()));
      //show( "allKeys2 ", allKeys);

      ArrayList list = new ArrayList( allKeys);
      Collections.sort(list);
      //show( "allKeys3 ", list);

      String result[] = new String[list.size()];
      for (int i=0; i<list.size(); i++)
        result[i] = list.get(i).toString();
      return result;
    }
protected String[] keysSpi() throws BackingStoreException{
      HashSet allKeys = new HashSet(keyValues.keySet());
      //show( "allKeys1 ", allKeys);

      PreferencesExt sd = getStoredDefaults();
      if (sd != null)
        allKeys.addAll(  sd.keysSpi(absolutePath()));
      //show( "allKeys2 ", allKeys);

      ArrayList list = new ArrayList( allKeys);
      Collections.sort(list);
      //show( "allKeys3 ", list);

      String result[] = new String[list.size()];
      for (int i=0; i<list.size(); i++)
        result[i] = list.get(i).toString();
      return result;
    }
/* Find all key names of this node (or of identically named nodes in
storedDefaults)

(The returned array will be of size zero if this node has no preferences.)
It is guaranteed that this node has not been removed.

This method is invoked with the lock on this node held.