public static void assertNoDefaultProperties(Object o) throws Exception {
		if (o == null) {
			throw new NullPointerException("Object may not be null");
		}
		Class c = o.getClass();
		Map<String, Prop> props = getProperties(c);
		List<String> propNames =
			new ArrayList<String>(props.keySet());
		for (String name : propNames) {
			Prop p= props.get(name);
			Object target = null;
			if (p.rawField != null) {
				target = p.rawField.get(o);
			} else if (p.getter != null) {
				target = p.getter.invoke(o, new Object[0]);
			}
			System.out.printf("Field %s, value %s%n", name, target);
			if (target == null || target.equals(Boolean.FALSE)) {
				throw new AssertionError("property " + p.name + " is default");
			}
		}
		System.out.println("assertNoDefaultProperties didn't find any problems");
	}