docs: private static String cleanDocumentation(String comment, Iterable<String> sourceParameters, Iterable<String> targetParameters) {
  		String clean = comment;
  		if (!Strings.isNullOrEmpty(clean)) {
  			final Set<String> parameterNames = new TreeSet<>();
  			if (sourceParameters != null) {
  				for (final String param : sourceParameters) {
  					parameterNames.add(param);
  				}
  			}
  			if (targetParameters != null) {
  				for (final String param : targetParameters) {
  					parameterNames.remove(param);
  				}
  			}
  			for (final String parameterName : parameterNames) {
  				clean = clean.replaceFirst(
  					"\\Q@param\\E\\s+\\Q" + parameterName + "\\E\\s*", //$NON-NLS-1$//$NON-NLS-2$
  					"@optionalparam " + parameterName + " "); //$NON-NLS-1$//$NON-NLS-2$
  			}
  		}
  		return clean;
  	}