docs: @Override
  	protected void transform(final XtendConstructor source, final JvmGenericType container) {
  		final String constructorName = container.getSimpleName();
  
  		// Special case: static constructor
  		if (source.isStatic()) {
  			final JvmOperation staticConstructor = this.typesFactory.createJvmOperation();
  			container.getMembers().add(staticConstructor);
  			this.associator.associatePrimary(source, staticConstructor);
  			staticConstructor.setSimpleName(Utils.STATIC_CONSTRUCTOR_NAME);
  			staticConstructor.setVisibility(JvmVisibility.PRIVATE);
  			staticConstructor.setStatic(true);
  			staticConstructor.setReturnType(this._typeReferenceBuilder.typeRef(Void.TYPE));
  			setBody(staticConstructor, source.getExpression());
  			copyAndCleanDocumentationTo(source, staticConstructor);
  			return;
  		}
  
  		final GenerationContext context = getContext(container);
  
  		final boolean isVarArgs = Utils.isVarArg(source.getParameters());
  
  		// Generate the unique identifier of the constructor.
  		final QualifiedActionName actionKey = this.sarlSignatureProvider.createConstructorQualifiedName(container);
  
  		// Generate all the constructor signatures related to the constructor to create.
  		final InferredPrototype constructorSignatures = this.sarlSignatureProvider.createPrototypeFromSarlModel(
  				actionKey,
  				Utils.isVarArg(source.getParameters()), source.getParameters());
  
  		// Generate the main Java constructor.
  		final JvmConstructor constructor = this.typesFactory.createJvmConstructor();
  		container.getMembers().add(constructor);
  		this.associator.associatePrimary(source, constructor);
  		constructor.setSimpleName(constructorName);
  		setVisibility(constructor, source);
  		constructor.setVarArgs(isVarArgs);
  
  		// Generate the parameters
  		final List<InferredStandardParameter> paramList = constructorSignatures.getOriginalParameterTypes();
  		translateSarlFormalParameters(
  				context,
  				constructor, container, isVarArgs,
  				source.getParameters(), false, paramList);
  
  		// Generate additional information (type parameters, exceptions...)
  		copyAndFixTypeParameters(source.getTypeParameters(), constructor);
  		for (final JvmTypeReference exception : source.getExceptions()) {
  			constructor.getExceptions().add(this.typeBuilder.cloneWithProxies(exception));
  		}
  		translateAnnotationsTo(source.getAnnotations(), constructor);
  
  		// Set the body.
  		setBody(constructor, source.getExpression());
  
  		// The signature definition of the constructor.
  		final ActionParameterTypes sigKey = this.sarlSignatureProvider.createParameterTypesFromJvmModel(
  				isVarArgs, constructor.getParameters());
  
  		// Update the list of generated constructors
  		if (context != null) {
  			context.getGeneratedConstructors().put(sigKey, constructor);
  		}
  
  		copyAndCleanDocumentationTo(source, constructor);
  
  		final Runnable differedGeneration  = () -> {
  			// Generate the Java functions that correspond to the action with the parameter default values applied.
  			for (final Entry<ActionParameterTypes, List<InferredStandardParameter>> entry
  					: constructorSignatures.getInferredParameterTypes().entrySet()) {
  
  				if (context == null || !context.getGeneratedConstructors().containsKey(entry.getKey())) {
  					final List<InferredStandardParameter> otherSignature = entry.getValue();
  					// Generate the additional constructor that is invoke the main constructor previously generated.
  					final JvmConstructor constructor2 = SARLJvmModelInferrer.this.typesFactory.createJvmConstructor();
  					container.getMembers().add(constructor2);
  					copyAndCleanDocumentationTo(source, constructor2);
  					constructor2.setSimpleName(container.getSimpleName());
  					constructor2.setVisibility(constructor.getVisibility());
  					constructor2.setVarArgs(isVarArgs);
  
  					final List<String> args = translateSarlFormalParametersForSyntheticOperation(
  							constructor2, container, isVarArgs, otherSignature);
  
  					addAnnotationSafe(
  							constructor2, DefaultValueUse.class,
  							constructorSignatures.getFormalParameterTypes().toString());
  					appendGeneratedAnnotation(constructor2, context);
  
  					setBody(constructor2, toStringConcatenation(
  							"this(" //$NON-NLS-1$
  							+ IterableExtensions.join(args, ", ") //$NON-NLS-1$
  							+ ");")); //$NON-NLS-1$
  
  					// Update the list of the generated constructors.
  					if (context != null) {
  						context.getGeneratedConstructors().put(entry.getKey(), constructor2);
  					}
  				}
  			}
  		};
  
  		if (context != null) {
  			context.getPreFinalizationElements().add(differedGeneration);
  			context.setActionIndex(context.getActionIndex() + 1);
  			context.incrementSerial(sigKey.hashCode());
  		} else {
  			differedGeneration.run();
  		}
  	}