code: public Map getMapFromReference(final Reference ref, final Map defaults) {
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.entry(this, TRACE, "getMapFromReference", new Object[] {ref,defaults});
          }
  
          Map extractedProps = null;
  
          // Extract a Map of the properties from the Reference
          synchronized (ref) {
  
              Enumeration propsList = ref.getAll();
  
              // This will be set up to contain a map representing all the
              // information that was previously stored in the Reference.
              final Map<String,String> encodedMap = new HashMap<String,String>();
  
              // Look at each property in turn.
              while (propsList.hasMoreElements()) {
  
                  // Get the coded version of the name. This will start with one
                  // of the prefix values. The codedName must have been non-null.
                  StringRefAddr refAddr = (StringRefAddr) propsList.nextElement();
                  String codedName = refAddr.getType();
                  String val = (String) refAddr.getContent();
  
                  // Store the coded information in the map.
                  encodedMap.put(codedName, val);
  
              }//while
  
              // Decode the encoded map.
              extractedProps = getStringDecodedMap(encodedMap, defaults);
  
          }//sync
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.exit(this, TRACE, "getMapFromReference", extractedProps);
          }
          return extractedProps;
  
      }
docs: Uses the reference passed in to extract a map of properties which have
  been stored in this Reference.
  
  @param ref
  the reference
  @param defaults
  the default set of properties to be used (those in the reference will override these)
  @return the map of properties