code: private void loadExtraFiles(final String filterPrefix, final boolean preserveExisting) {
  		Map<String, String> view = Maps.filterKeys(this, Predicates.startsWith(filterPrefix));
  		while (true) {
  			if (view.isEmpty()) {
  				break;
  			}
  
  			Queue<String> fileKeys = Queues.newArrayDeque(view.values());
  
  			// we need to keep them separately in order to be able to reload them (see put method)
  			extraFileProperties.addAll(fileKeys);
  
  			// Remove original keys in order to prevent a stack overflow
  			view.clear();
  
  			for (String fileNameKey = null; (fileNameKey = fileKeys.poll()) != null;) {
  				// Recursion
  				String fileName = processPropertyValue(fileNameKey);
  				if (PLACEHOLDER_PATTERN.matcher(fileName).find()) {
  					// not all placeholders were resolved, so we enqueue it again to process another file first
  					fileKeys.offer(fileName);
  				} else {
  					load(fileName, preserveExisting);
  				}
  			}
  		}
  	}
docs: If properties are present which start with {@link JFunkConstants#SYSTEM_PROPERTIES} the
  corresponding values are taken as property files and loaded here.