code: Map<String, Object> getCopyOfProperties() {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "getCopyOfProperties");
  
          Map<String, Object> temp = null;
  
          // Make sure no-one changes the properties underneath us.
          synchronized (properties) {
              temp = new HashMap<String, Object>(properties);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "getCopyOfProperties", temp);
          return temp;
      }
docs: Creates a new Map object and duplicates the properties into the new Map.
  Note that it does not _copy_ the parameter keys and values so if the map
  contains objects which are mutable you may get strange behaviour.
  In short - only use immutable objects for keys and values!
  
  This method is used by MsgDestEncodingUtilsImpl to create a copy of the properties.