code: public static <T> T recursiveInitialize(final T obj) {
  		if (obj != null) {
  			final Set<Object> dejaVu = Collections.newSetFromMap(new IdentityHashMap<Object, Boolean>());
  			recursiveInitialize(obj, dejaVu);
  		}
  		return obj;
  	}
docs: Recursive initliaze.
  
  @param <T>
  the generic type
  @param obj
  the obj
  @return the t