code: public void set(String propertyPath, Object propertyValue)
  			throws PropertyException {
  		// check propertyPath
  		ObjectChecks
  				.checkForNullReference(propertyPath, "propertyPath is null");
  
  		// check propertyValue
  		if (!(propertyValue instanceof String)
  				&& !(propertyValue instanceof Integer)
  				&& !(propertyValue instanceof Double)
  				&& !(propertyValue instanceof Boolean)
  				&& !(propertyValue instanceof Map)
  				&& !(propertyValue instanceof List)) {
  			throw new PropertyException(
  					"Only String, int, double, boolean, Map and List are supported.");
  		}
  
  		// add the mPreFixPropertyPath if this Property is a copy with a deeper
  		// level
  		String fullPropertyPath = addPath(mPropertyPathPrefix, propertyPath);
  
  		// add propertyValue with the fullPropertyPath
  		addToRootMap(fullPropertyPath, propertyValue);
  
  		mLogger.debug("Set the property value: " + propertyValue + " on key: "
  				+ fullPropertyPath);
  	}
docs: Save the value with a given key. {@link Map} and {@link List} can only
  contain simple data-types.
  
  @param propertyPath
  Example: foo.bar.key
  @param propertyValue
  only {@link String}, {@link Integer}, {@link Double},
  {@link Boolean}, {@link Map} and {@link List} are supported
  @throws PropertyException
  If the propertyKey-Path is not a property key or is not part
  of a property path.