docs: protected String internalExecute(Map<File, File> files, File outputFolder) {
  		String firstErrorMessage = null;
  
  		for (final Entry<File, File> entry : files.entrySet()) {
  			final File inputFile = entry.getKey();
  			try {
  				final AbstractMarkerLanguageParser parser = createLanguageParser(inputFile);
  				final File sourceFolder = entry.getValue();
  				final File relativePath = FileSystem.makeRelative(inputFile, sourceFolder);
  				internalExecute(sourceFolder, inputFile, relativePath, outputFolder, parser);
  			} catch (Throwable exception) {
  				final String errorMessage = formatErrorMessage(inputFile, exception);
  				getLog().error(errorMessage);
  				if (Strings.isEmpty(firstErrorMessage)) {
  					firstErrorMessage = errorMessage;
  				}
  				getLog().debug(exception);
  			}
  		}
  		return firstErrorMessage;
  	}