docs: @Check(CheckType.NORMAL)
  	@Override
  	@SuppressWarnings("checkstyle:npathcomplexity")
  	public void checkClassPath(XtendFile sarlScript) {
  		final TypeReferences typeReferences = getServices().getTypeReferences();
  
  		if (!Utils.isCompatibleJREVersion()) {
  			error(
  					MessageFormat.format(
  							Messages.SARLValidator_3,
  							System.getProperty("java.specification.version"), //$NON-NLS-1$
  							SARLVersion.MINIMAL_JDK_VERSION,
  							SARLVersion.MAXIMAL_JDK_VERSION),
  					sarlScript,
  					XtendPackage.Literals.XTEND_FILE__PACKAGE,
  					JDK_NOT_ON_CLASSPATH);
  		} else {
  			final GeneratorConfig generatorConfiguration = getGeneratorConfig(sarlScript);
  			final JavaVersion generatorVersion = generatorConfiguration.getJavaSourceVersion();
  			if (generatorVersion == null
  					|| !Utils.isCompatibleJREVersion(generatorVersion.getQualifier())) {
  				error(
  						MessageFormat.format(
  								Messages.SARLValidator_4,
  								generatorVersion,
  								SARLVersion.MINIMAL_JDK_VERSION,
  								SARLVersion.MAXIMAL_JDK_VERSION),
  						sarlScript,
  						XtendPackage.Literals.XTEND_FILE__PACKAGE,
  						JDK_NOT_ON_CLASSPATH);
  			}
  		}
  
  		if (!Utils.isCompatibleXtextVersion()) {
  			error(
  					MessageFormat.format(
  							Messages.SARLValidator_5,
  							XtextVersion.getCurrent(),
  							SARLVersion.MINIMAL_XTEXT_VERSION),
  					sarlScript,
  					XtendPackage.Literals.XTEND_FILE__PACKAGE,
  					XBASE_LIB_NOT_ON_CLASSPATH);
  		} else {
  			final JvmType type = typeReferences.findDeclaredType(ToStringBuilder.class.getName(), sarlScript);
  			if (type == null) {
  				error(
  						MessageFormat.format(
  								Messages.SARLValidator_6,
  								SARLVersion.MINIMAL_XTEXT_VERSION),
  						sarlScript,
  						XtendPackage.Literals.XTEND_FILE__PACKAGE,
  						XBASE_LIB_NOT_ON_CLASSPATH);
  			}
  		}
  
  		final OutParameter<String> sarlLibraryVersion = new OutParameter<>();
  		final SarlLibraryErrorCode errorCode = Utils.getSARLLibraryVersionOnClasspath(typeReferences, sarlScript, sarlLibraryVersion);
  		if (errorCode != SarlLibraryErrorCode.SARL_FOUND) {
  			final ResourceSet resourceSet = EcoreUtil2.getResourceSet(sarlScript);
  			final StringBuilder classPath = new StringBuilder();
  			for (final Resource resource : resourceSet.getResources()) {
  				classPath.append(resource.getURI().toString());
  				classPath.append("\n"); //$NON-NLS-1$
  			}
  			final StringBuilder fields = new StringBuilder();
  			try {
  				final JvmDeclaredType type = (JvmDeclaredType) typeReferences.findDeclaredType(SARLVersion.class, sarlScript);
  				for (final JvmField field : type.getDeclaredFields()) {
  					fields.append(field.getIdentifier());
  					fields.append(" / "); //$NON-NLS-1$
  					fields.append(field.getSimpleName());
  					fields.append("\n"); //$NON-NLS-1$
  				}
  			} catch (Exception e) {
  				//
  			}
  			if (fields.length() == 0) {
  				for (final Field field : SARLVersion.class.getDeclaredFields()) {
  					fields.append(field.getName());
  					fields.append("\n"); //$NON-NLS-1$
  				}
  			}
  			error(
  					MessageFormat.format(Messages.SARLValidator_7, errorCode.name(), classPath.toString(), fields.toString()),
  					sarlScript,
  					XtendPackage.Literals.XTEND_FILE__PACKAGE,
  					SARL_LIB_NOT_ON_CLASSPATH);
  		} else if (!Utils.isCompatibleSARLLibraryVersion(sarlLibraryVersion.get())) {
  			error(
  					MessageFormat.format(Messages.SARLValidator_8,
  							sarlLibraryVersion.get(), SARLVersion.SPECIFICATION_RELEASE_VERSION_STRING),
  					sarlScript,
  					XtendPackage.Literals.XTEND_FILE__PACKAGE,
  					INVALID_SARL_LIB_ON_CLASSPATH);
  		}
  	}