public static LanguageVersionException check(Language language, int languageVersion,
			int languageMinorVersion) throws LanguageNotFoundException {

		LanguageID languageID = language.getLanguageID();

		if (language.getVersion() > languageVersion) {

			Language newLanguage = language;

			Language oldLanguage = OldLanguageFactory.getOldLanguageFactory()
					.getOldLanguage(languageID, languageVersion);
			if (oldLanguage == null) {
				// old language does not exist to facilitate upgrade translation
				String msg = "Old language specification not found: " + languageID + " (Version " +
					languageVersion + "), translation not possible";
				Msg.error(LanguageVersionException.class, msg);
				return new LanguageVersionException(msg, false);
			}

			// Ensure that we can upgrade the language
			LanguageTranslator languageUpgradeTranslator =
				LanguageTranslatorFactory.getLanguageTranslatorFactory()
						.getLanguageTranslator(oldLanguage, newLanguage);
			if (languageUpgradeTranslator == null) {

// TODO: This is a bad situation!! Most language revisions should be supportable, if not we have no choice but to throw 
// a LanguageNotFoundException  until we figure out how to deal with nasty translations which require
// a complete redisassembly and possibly auto analysis.

				throw new LanguageNotFoundException(language.getLanguageID(),
					"(Ver " + languageVersion + "." + languageMinorVersion + " -> " +
						newLanguage.getVersion() + "." + newLanguage.getMinorVersion() +
						") language version translation not supported");
			}
			language = oldLanguage;
			return new LanguageVersionException(oldLanguage, languageUpgradeTranslator);
		}
		else if (language.getVersion() == languageVersion && languageMinorVersion < 0) {
			// Minor version ignored - considered as match if major number matches
			return null;
		}
		else if (language.getVersion() == languageVersion &&
			language.getMinorVersion() > languageMinorVersion) {
			// Minor version change - translator not needed (languageUpgradeTranslator is null)
			String fromVer = languageVersion + "." + languageMinorVersion;
			String toVer = languageVersion + "." + language.getMinorVersion();
			return new LanguageVersionException("Minor language change " + fromVer + " -> " + toVer,
				true);
		}
		else if (language.getMinorVersion() != languageMinorVersion ||
			language.getVersion() != languageVersion) {
			throw new LanguageNotFoundException(language.getLanguageID(), languageVersion,
				languageMinorVersion);
		}
		return null; // language matches
	}
Check language against required version information.  If not a match or upgradeable
a {@link LanguageNotFoundException} will be thrown.  If an upgradeable {@link LanguageVersionException}
is returned, a major version change will also include the appropriate Old-Language stub and
{@link LanguageTranslator} required to facilitate a language upgrade.
@param language language corresponding to desired language ID
@param languageVersion required major language version
@param languageMinorVersion required minor language version.  A negative minor version will be ignored.
@return null if language matches, otherwise an upgradeable {@link LanguageVersionException}.
@throws LanguageNotFoundException if language is a mismatch and is not upgradeable.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/LanguageVersionException.java