code: public <T> T deepCopy(final T obj) {
  		return deepCopy(obj, new IdentityHashMap<Object, Object>(10));
  	}
docs: Performs a deep copy of the object. With a deep copy all references from the object are also copied.
  The identity of referenced objects is preserved, so, for example, if the object graph contains two
  references to the same object, the cloned object will preserve this structure.
  @param obj The object to perform a deep copy for.
  @param <T> The type being copied
  @return A deep copy of the original object.