code: public static <K> void makeAuditableCopies(Map<K, Copier> aFormMap, Map<K, Copier> aToMap,
  	Auditable aAuditable)
  
  	{
  		if (aFormMap == null || aToMap == null)
  			return;
  
  		// for thru froms
  		K fromKey = null;
  		Copier to = null;
  		Copier from = null;
  		for (Map.Entry<K, Copier> entry : aFormMap.entrySet())
  		{
  			fromKey = entry.getKey();
  
  			if (aToMap.keySet().contains(fromKey))
  			{
  				// copy existening data
  				to = (Copier) aToMap.get(fromKey);
  				to.copy((Copier) entry.getValue());
  
  				// copy auditing info
  				if (aAuditable != null && to instanceof Auditable)
  				{
  					AbstractAuditable.copy(aAuditable, (Auditable) to);
  				}
  			}
  			else
  			{
  				from = (Copier) aFormMap.get(fromKey);
  
  				// copy auditing info
  				if (aAuditable != null && from instanceof Auditable)
  				{
  					AbstractAuditable.copy(aAuditable, (Auditable) from);
  				}
  
  				// add to
  				aToMap.put(fromKey, from);
  			}
  		}
  	}
docs: Copy value form one map to another
  
  @param aAuditable
  the auditable to copy
  @param aFormMap
  the input map of copiers
  @param <K>
  the key name
  @param aToMap
  the output map of copiers