code: private void resolveTemporaryProperties(Map<String, Set<String>> map) {
          boolean temporaryPresent = false;
          do {
              temporaryPresent = false;
              for (Map.Entry<String, Set<String>> entry : map.entrySet()) {
                  Set<String> newProperties = new HashSet<String>();
                  Iterator<String> properties = entry.getValue().iterator();
                  while (properties.hasNext()) {
                      String property = properties.next();
                      if (isTemporaryProperty(property)) {
                          LOGGER.debug("Resolve temporary field {} for property {}", entry.getKey(), property);
                          temporaryPresent = true;
                          newProperties.addAll(map.get(property));
                          properties.remove();
                      }
                  }
                  entry.getValue().addAll(newProperties);
              }
          } while (temporaryPresent);
      }
docs: Resolves the temporary properties of the given property map. It replaces the temporary properties in the values
  of the given map with the values of the temporary property it replaces. This procedure is done until there are no
  more temporary fields present in the values of the map.