public LanguageTranslator getLanguageTranslator(Language fromLanguage, Language toLanguage) {
		if (toLanguage instanceof OldLanguage) {
			throw new IllegalArgumentException("toLanguage instanceof OldLanguage");
		}
		int fromVersion = fromLanguage.getVersion();
		int toVersion = toLanguage.getVersion();

		if (fromLanguage.getLanguageID().equals(toLanguage.getLanguageID())) {
			// Handle version change
			if (fromVersion >= toVersion) {
				throw new IllegalArgumentException("language from-version >= to-version");
			}
			return getLanguageVersionTranslator(fromLanguage.getLanguageID(), fromVersion,
				toVersion);
		}

		// Handle language change
		List<LanguageTranslator> languageTranslatorList =
			translatorMap.get(fromLanguage.getLanguageID());
		if (languageTranslatorList != null) {
			for (LanguageTranslator translator : languageTranslatorList) {
				if (translator.getOldVersion() < fromVersion ||
					!toLanguage.getLanguageID().equals(translator.getNewLanguageID())) {
					continue;
				}
				translator = expandTranslator(translator, fromVersion);
				if (translator != null) {
					return translator;
				}
			}
		}
		return LanguageTranslatorAdapter.getDefaultLanguageTranslator(fromLanguage, toLanguage);
	}
Returns a language translator for the transition from an oldLanguage to a newLanguage.
The toLanguage may be a different language or a newer version of fromLanguage.
@param fromLanguage old language
@param toLanguage new language
@return language translator if transition is supported, otherwise null is returned.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/LanguageTranslatorFactory.java