docs: protected void transform(SarlCapacityUses source, JvmGenericType container) {
  		final GenerationContext context = getContext(container);
  		if (context == null) {
  			return;
  		}
  		for (final JvmTypeReference capacityType : source.getCapacities()) {
  			final JvmType type = capacityType.getType();
  			if (type instanceof JvmGenericType
  					/*&& this.inheritanceHelper.isSubTypeOf(capacityType, Capacity.class, SarlCapacity.class)*/
  					&& !context.getGeneratedCapacityUseFields().contains(capacityType.getIdentifier())) {
  				// Generate the buffer field
  				final String fieldName = Utils.createNameForHiddenCapacityImplementationAttribute(capacityType.getIdentifier());
  				final JvmField field = this.typesFactory.createJvmField();
  				container.getMembers().add(field);
  				field.setVisibility(JvmVisibility.PRIVATE);
  				field.setSimpleName(fieldName);
  				field.setTransient(true);
  				final JvmType clearableReferenceType = this.typeReferences.findDeclaredType(ClearableReference.class, container);
  				final JvmTypeReference skillClearableReference = this.typeReferences.createTypeRef(
  						clearableReferenceType,
  						this.typeReferences.createTypeRef(this.typeReferences.findDeclaredType(Skill.class, container)));
  				field.setType(skillClearableReference);
  
  				this.associator.associatePrimary(source, field);
  
  				addAnnotationSafe(field, Extension.class);
  				field.getAnnotations().add(annotationClassRef(ImportedCapacityFeature.class,
  						Collections.singletonList(capacityType)));
  				appendGeneratedAnnotation(field, getContext(container));
  
  				// Generate the calling function
  				final String methodName = Utils.createNameForHiddenCapacityImplementationCallingMethodFromFieldName(
  						fieldName);
  				final JvmOperation operation = this.typesFactory.createJvmOperation();
  				container.getMembers().add(operation);
  				operation.setVisibility(JvmVisibility.PRIVATE);
  				operation.setReturnType(cloneWithTypeParametersAndProxies(capacityType, operation));
  				operation.setSimpleName(methodName);
  
  				this.associator.associatePrimary(source, operation);
  
  				setBody(operation, it -> {
  					it.append("if (this.").append(fieldName).append(" == null || this."); //$NON-NLS-1$ //$NON-NLS-2$
  					it.append(fieldName).append(".get() == null) {"); //$NON-NLS-1$
  					it.increaseIndentation();
  					it.newLine();
  					it.append("this.").append(fieldName).append(" = ") //$NON-NLS-1$ //$NON-NLS-2$
  							.append(Utils.HIDDEN_MEMBER_CHARACTER).append("getSkill("); //$NON-NLS-1$
  					it.append(capacityType.getType()).append(".class);"); //$NON-NLS-1$
  					it.decreaseIndentation();
  					it.newLine();
  					it.append("}"); //$NON-NLS-1$
  					it.newLine();
  					it.append("return ").append(Utils.HIDDEN_MEMBER_CHARACTER) //$NON-NLS-1$
  							.append("castSkill(").append(capacityType.getType()).append(".class, this.") //$NON-NLS-1$ //$NON-NLS-2$
  							.append(fieldName).append(");"); //$NON-NLS-1$
  				});
  
  				// Add the annotation dedicated to this particular method
  				if (context.isAtLeastJava8()) {
  					context.getPostFinalizationElements().add(() -> {
  						final String inlineExpression = Utils.HIDDEN_MEMBER_CHARACTER
  								+ "castSkill(" + capacityType.getSimpleName() //$NON-NLS-1$
  								+ ".class, ($0" + fieldName //$NON-NLS-1$
  								+ " == null || $0" + fieldName //$NON-NLS-1$
  								+ ".get() == null) ? ($0" + fieldName //$NON-NLS-1$
  								+ " = $0" + Utils.HIDDEN_MEMBER_CHARACTER + "getSkill(" //$NON-NLS-1$ //$NON-NLS-2$
  								+ capacityType.getSimpleName()
  								+ ".class)) : $0" + fieldName + ")"; //$NON-NLS-1$ //$NON-NLS-2$;
  						this.inlineExpressionCompiler.appendInlineAnnotation(
  								operation, source.eResource().getResourceSet(), inlineExpression, capacityType);
  					});
  				}
  				appendGeneratedAnnotation(operation, context);
  				if (context.getGeneratorConfig2().isGeneratePureAnnotation()) {
  					addAnnotationSafe(operation, Pure.class);
  				}
  
  				context.addGeneratedCapacityUseField(capacityType.getIdentifier());
  				context.incrementSerial(capacityType.getIdentifier().hashCode());
  			}
  		}
  	}