public static Map<String, Field> getPreferenceFields(Object o) {
		Class<?> c = o.getClass();
		Field[] prefFields = c.getDeclaredFields();
		Map<String, Field> fields = new HashMap<String, Field>();

		for (Field field : prefFields) {
			int mod = field.getModifiers();
			String name = field.getName();
			Class<?> type = field.getType();
			if (!supportedClass.contains(type)) {
				continue;
			}
			if (name.startsWith("pref")) {
				name = name.substring("pref".length());
			} else {
				name = null;
			}
			if (name == null || name.equals("")) {
				continue;
			}
			if (!methodMap.containsKey(name)) {
				continue;
			}
			if (Modifier.isPrivate(mod)) {
				fields.put(name, field);
			}
		}
		return fields;
	}