public static void clean(Object o) {
		Class<?> c = o.getClass();
		while (c != null) {
			for (Field field : c.getDeclaredFields()) {
				if (field.getType().isArray() || field.getType().isPrimitive())
					continue;
				if ((field.getModifiers() & Modifier.STATIC) == Modifier.STATIC)
					continue;
				try {
					field.setAccessible(true);
					field.set(o, null);
				} catch (IllegalAccessException e) {
					// TODO checking
				}
			}
			c = c.getSuperclass();
		}
	}