class Configuration {

  public Set<String> moveProperties(String sourceConfigType, String targetConfigType, Set<String> propertiesToMove) {
    Set<String> moved = new HashSet<>();
    for (String property : propertiesToMove) {
      if (isPropertySet(sourceConfigType, property)) {
        String value = removeProperty(sourceConfigType, property);
        if (!isPropertySet(targetConfigType, property)) {
          setProperty(targetConfigType, property, value);
        }
        moved.add(property);
      }
    }
    return moved;
  }

  public  Configuration(Map<String, Map<String, String>> properties,
                       Map<String, Map<String, Map<String, String>>> attributes,
                       Configuration parentConfiguration);
  public  Configuration(Map<String, Map<String, String>> properties,
                       Map<String, Map<String, Map<String, String>>> attributes);

}