docs: public Map<String,String> getStringEncodedMap(final Map raw, final Map defaults) {
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.entry(this, TRACE, "getStringEncodedMap", new Object[] {raw,defaults});
          }
  
          final Map<String,String> encodedMap = new HashMap<String,String>();
          final Iterator propKeys = raw.keySet().iterator();
  
          // Look at each key in turn.
          while (propKeys.hasNext()) {
  
              String key = (String) propKeys.next();
  
              // Only store non-null keys.
              if (key != null) {
  
                  // Retrieve the value part of the map.
                  Object val = raw.get(key);
  
                  // Initialize the lookup table if necessary.
                  if (prefixTable == null) {
                      populatePrefixTable();
                  }
  
                  // Should we skip this property
                  if (defaults.containsKey(key) && defaults.get(key) != null && defaults.get(key).equals(val))
                    continue;
                  
                  String prefix = null;
                  String strForm = null;
  
                  // Work out the correct class type and prefix, taking care of
                  // null
                  // value.
                  if (val == null) {
                      prefix = PREFIX_NULL;
                      strForm = null;
  
                  } else {
  
                      // Look up the prefix based on the class
                      prefix = prefixTable.get(val.getClass());
  
                      if (prefix == null) {
  
                          if (TraceComponent.isAnyTracingEnabled() && TRACE.isDebugEnabled()) {
                              SibTr.debug(TRACE,
                                      "unsupported type for property: "
                                              + val.getClass().getName());
                          }
  
                          // Ignore the unsupported type.
                          continue;
  
                      }//if prefix found.
  
                      // We know the object is not null, so convert it to a String
                      strForm = val.toString();
  
                  }//if val null
  
                  // Prepend the prefix to the key
                  String prefixedKey = prefix + PREFIX_SEPARATOR + key;
  
                  encodedMap.put(prefixedKey, strForm);
  
                  if (TraceComponent.isAnyTracingEnabled() && TRACE.isDebugEnabled()) {
                      SibTr.debug(TRACE, "encoded: " + prefixedKey + " = '"
                              + strForm + "'");
                  }
  
              }// if key not null
  
          }//while
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.exit(this, TRACE, "getStringEncodedMap", encodedMap);
          }
          return encodedMap;
  
      }