docs: protected boolean checkImplementedTypes(
  			XtendTypeDeclaration element,
  			EReference feature,
  			List<? extends JvmTypeReference> implementedTypes,
  			Class<?> expectedType,
  			int mandatoryNumberOfTypes,
  			boolean onlySubTypes) {
  		boolean success = true;
  		int nb = 0;
  		int index = 0;
  		for (final JvmTypeReference superType : implementedTypes) {
  			final LightweightTypeReference  ref = toLightweightTypeReference(superType);
  			if (ref != null
  					&& (!ref.isInterfaceType() || !ref.isSubtypeOf(expectedType)
  							|| (onlySubTypes && ref.isType(expectedType)))) {
  				final String msg;
  				if (onlySubTypes) {
  					msg = Messages.SARLValidator_72;
  				} else {
  					msg = Messages.SARLValidator_73;
  				}
  				error(MessageFormat.format(
  						msg,
  						superType.getQualifiedName(),
  						expectedType.getName(),
  						element.getName()),
  						element,
  						feature,
  						index,
  						INVALID_IMPLEMENTED_TYPE,
  						superType.getSimpleName());
  				success = false;
  			} else {
  				++nb;
  			}
  			++index;
  		}
  		if (nb < mandatoryNumberOfTypes) {
  			error(MessageFormat.format(
  					Messages.SARLValidator_74,
  					expectedType.getName(),
  					element.getName()),
  					element,
  					feature,
  					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
  					MISSING_TYPE);
  			success = false;
  		}
  		return success;
  	}