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;
	}
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;
	}
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 ; }
Recursive initliaze.

@param <T>
the generic type
@param obj
the obj
@return the t
Recursive initliaze .