docs: protected StringConcatenationClient generateKeyword(final String keyword, final String comment, Map<String, String> getters) {
  		final String fieldName = keyword.toUpperCase().replaceAll("[^a-zA-Z0-9_]+", "_"); //$NON-NLS-1$ //$NON-NLS-2$
  		final String methodName = Strings.toFirstUpper(keyword.replaceAll("[^a-zA-Z0-9_]+", "_")) //$NON-NLS-1$ //$NON-NLS-2$
  				+ "Keyword"; //$NON-NLS-1$
  		if (getters != null) {
  			getters.put(methodName, keyword);
  		}
  		return new StringConcatenationClient() {
  			@Override
  			protected void appendTo(TargetStringConcatenation it) {
  				it.append("\tprivate static final String "); //$NON-NLS-1$
  				it.append(fieldName);
  				it.append(" = \""); //$NON-NLS-1$
  				it.append(Strings.convertToJavaString(keyword));
  				it.append("\";"); //$NON-NLS-1$
  				it.newLineIfNotEmpty();
  				it.newLine();
  				it.append("\t/** Keyword: {@code "); //$NON-NLS-1$
  				it.append(protectCommentKeyword(keyword));
  				it.append("}."); //$NON-NLS-1$
  				it.newLine();
  				if (!Strings.isEmpty(comment)) {
  					it.append("\t * Source: "); //$NON-NLS-1$
  					it.append(comment);
  					it.newLine();
  				}
  				it.append("\t */"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\tpublic String get"); //$NON-NLS-1$
  				it.append(methodName);
  				it.append("() {"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t\treturn "); //$NON-NLS-1$
  				it.append(fieldName);
  				it.append(";"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t}"); //$NON-NLS-1$
  				it.newLineIfNotEmpty();
  				it.newLine();
  			}
  		};
  	}