docs: protected void generateBuilderFactoryContributions() {
  		// Get a container
  		final String createFunctionName = "create" //$NON-NLS-1$
  				+ Strings.toFirstUpper(this.constructor.getElementDescription().getName());
  		final String createContainerFunctionName = "add" //$NON-NLS-1$
  				+ Strings.toFirstUpper(this.constructor.getContainerDescription().getName());
  		final TypeReference containerBuilder = this.constructor.getContainerDescription().getBuilderInterfaceType();
  		// Generate the contribution.
  		this.builderFactoryContributions.addContribution(new StringConcatenationClient() {
  			@SuppressWarnings("synthetic-access")
  			@Override
  			protected void appendTo(TargetStringConcatenation it) {
  				it.append("\t/** Create the factory for a " + getLanguageName() + " constructor."); //$NON-NLS-1$ //$NON-NLS-2$
  				it.newLine();
  				it.append("\t * @param resourceSet the set of the resources that must be used for"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t *    containing the generated resource, and resolving types from names."); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t * @return the factory."); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t */"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t@"); //$NON-NLS-1$
  				it.append(Pure.class);
  				it.newLine();
  				it.append("\tpublic "); //$NON-NLS-1$
  				it.append(ConstructorBuilderFragment.this.constructor.getElementDescription().getBuilderInterfaceType());
  				it.append(" "); //$NON-NLS-1$
  				it.append(createFunctionName);
  				it.append("("); //$NON-NLS-1$
  				it.append(ResourceSet.class);
  				it.append(" resourceSet) {"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t\treturn "); //$NON-NLS-1$
  				it.append(createFunctionName);
  				it.append("(createResource(resourceSet));"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t}"); //$NON-NLS-1$
  				it.newLineIfNotEmpty();
  				it.newLine();
  				it.append("\t/** Create the factory for a " + getLanguageName() + " constructor."); //$NON-NLS-1$ //$NON-NLS-2$
  				it.newLine();
  				it.append("\t * @param resource the resource that must be used for"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t *    containing the generated resource, and resolving types from names."); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t * @return the factory."); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t */"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t@"); //$NON-NLS-1$
  				it.append(Pure.class);
  				it.newLine();
  				it.append("\tpublic "); //$NON-NLS-1$
  				it.append(ConstructorBuilderFragment.this.constructor.getElementDescription().getBuilderInterfaceType());
  				it.append(" "); //$NON-NLS-1$
  				it.append(createFunctionName);
  				it.append("("); //$NON-NLS-1$
  				it.append(Resource.class);
  				it.append(" resource) {"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t\t"); //$NON-NLS-1$
  				it.append(getScriptBuilderInterface());
  				it.append(" scriptBuilder = createScript(getFooPackageName(), resource);"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t\t"); //$NON-NLS-1$
  				it.append(containerBuilder);
  				it.append(" containerBuilder = scriptBuilder."); //$NON-NLS-1$
  				it.append(createContainerFunctionName);
  				it.append("(getFooTypeName());"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t\treturn containerBuilder.add"); //$NON-NLS-1$
  				it.append(ConstructorBuilderFragment.this.constructor.getElementDescription().getName());
  				it.append("();"); //$NON-NLS-1$
  				it.newLine();
  				it.append("\t}"); //$NON-NLS-1$
  				it.newLineIfNotEmpty();
  				it.newLine();
  			}
  		});
  		if (getCodeBuilderConfig().isISourceAppendableEnable()) {
  			final String buildFunctionName = "build" //$NON-NLS-1$
  					+ Strings.toFirstUpper(this.constructor.getElementDescription().getName());
  			final TypeReference appender = getCodeElementExtractor().getElementAppenderImpl(
  					this.constructor.getElementDescription().getName());
  			this.builderFactoryContributions.addContribution(new StringConcatenationClient() {
  				@Override
  				protected void appendTo(TargetStringConcatenation it) {
  					it.append("\t/** Create the appender for a " + getLanguageName() //$NON-NLS-1$
  							+ " constructor."); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t * @param resourceSet the set of the resources that must be used for"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t *    containing the generated resource, and resolving types from names."); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t * @return the appender."); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t */"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t@"); //$NON-NLS-1$
  					it.append(Pure.class);
  					it.newLine();
  					it.append("\tpublic "); //$NON-NLS-1$
  					it.append(appender);
  					it.append(" "); //$NON-NLS-1$
  					it.append(buildFunctionName);
  					it.append("("); //$NON-NLS-1$
  					it.append(ResourceSet.class);
  					it.append(" resourceSet) {"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t\t"); //$NON-NLS-1$
  					it.append(appender);
  					it.append(" a = new "); //$NON-NLS-1$
  					it.append(appender);
  					it.append("("); //$NON-NLS-1$
  					it.append(createFunctionName);
  					it.append("(resourceSet));"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t\tgetInjector().injectMembers(a);"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t\treturn a;"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t}"); //$NON-NLS-1$
  					it.newLineIfNotEmpty();
  					it.newLine();
  					it.append("\t/** Create the appender for a " + getLanguageName() //$NON-NLS-1$
  							+ " constructor."); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t * @param resource the resource that must be used for"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t *    containing the generated resource, and resolving types from names."); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t * @return the appender."); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t */"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t@"); //$NON-NLS-1$
  					it.append(Pure.class);
  					it.newLine();
  					it.append("\tpublic "); //$NON-NLS-1$
  					it.append(appender);
  					it.append(" "); //$NON-NLS-1$
  					it.append(buildFunctionName);
  					it.append("("); //$NON-NLS-1$
  					it.append(Resource.class);
  					it.append(" resource) {"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t\t"); //$NON-NLS-1$
  					it.append(appender);
  					it.append(" a = new "); //$NON-NLS-1$
  					it.append(appender);
  					it.append("("); //$NON-NLS-1$
  					it.append(createFunctionName);
  					it.append("(resource));"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t\tgetInjector().injectMembers(a);"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t\treturn a;"); //$NON-NLS-1$
  					it.newLine();
  					it.append("\t}"); //$NON-NLS-1$
  					it.newLineIfNotEmpty();
  					it.newLine();
  				}
  			});
  		}
  	}