protected void initFields() {
		if (fieldByName == null) {
			if (fieldStr == null) fieldStr = guessFields(); // No fields data? guess them.

			fieldNames = fieldStr.split("" + FIELD_NAME_SEPARATOR);
			fieldByName = new HashMap<String, Field>();

			for (String fname : fieldNames) {
				try {
					if (!fname.isEmpty()) {
						Field field = this.getClass().getField(fname);
						fieldByName.put(fname, field);
					}
				} catch (NoSuchFieldException e) {
					throw new RuntimeException("Error: Field '" + fname + "' not found for class '" + this.getClass().getCanonicalName() + "' (may be the fields is not public?)");
				}
			}
		}
	}