public void testBean(Object instance) throws Exception {

		List<Field> fields = getFields(instance);
		StringBuilder message = new StringBuilder();
		boolean alert = false;
		message.append("Testing " + instance.getClass().getSimpleName() + "\n");

		for (Field field : fields) {

			field.setAccessible(true);

			Method get = getGetter(field, instance);
			Method set = getSetter(field, instance);

			boolean getter = testGet(field, get, instance);
			boolean setter = testSet(field, set, instance);

			if (!(getter && setter)) {

				// These fields seem to be added to all objects by Emma code coverage, so we're not
				// interested in knowing about them.
				if (!(field.getName().equals("serialVersionUID") || field.getName().equals("$VRc"))) {
					alert = true;
					message.append(" - testing field: " + field.getName() + "\n");
					if (!getter) {
						message.append("   - no getter\n");
					}
					if (!setter) {
						message.append("   - no setter\n");
					}
				}
			}
		}

		if (alert) {
			System.out.println(message);
		}
	}