private Map<String, Field> getAllInstanceFields(Object object) {
		Map<String, Field> fields = new HashMap<String, Field>();

		Class<? extends Object> c = object.getClass();
		while (c != null) {
			for (Field f : c.getDeclaredFields()) {
				try {
					if (!Modifier.isStatic(f.getModifiers())
							&& !fields.containsKey(f.getName())) {
						fields.put(f.getName(), f);
					}
				} catch (IllegalArgumentException e) {
				}
			}
			c = c.getSuperclass();
		}
		return fields;
	}