private LanguageTranslator getLanguageVersionTranslator(LanguageID languageID, int fromVersion,
			int toVersion) {

		List<LanguageTranslator> list = translatorVersionMap.get(languageID);
		if (list == null) {
			return null;
		}

		LanguageTranslator translator = null;
		int version = fromVersion;
		while (version < toVersion) {

			LanguageTranslator nextTranslator = getNextTranslator(list, version);
			if (nextTranslator == null || nextTranslator.getNewVersion() > toVersion) {
				// explicit translator not found - try using default translator
				nextTranslator = LanguageTranslatorAdapter.getDefaultLanguageTranslator(languageID,
					version, toVersion);
				if (nextTranslator == null) {
					return null; // could not build default translator
				}
			}
			if (version == nextTranslator.getNewVersion()) {
				Msg.error(this, "Invalid language translator: " + nextTranslator);
				return null;
			}
			if (version != nextTranslator.getOldVersion()) {
				// fill-in translator gap with default translator
				LanguageTranslator gapTranslator =
					LanguageTranslatorAdapter.getDefaultLanguageTranslator(languageID, version,
						nextTranslator.getOldVersion());
				if (gapTranslator == null) {
					return null; // could not build default translator
				}
				nextTranslator = new FactoryLanguageTranslator(gapTranslator, nextTranslator);
			}
			if (translator != null) {
				translator = new FactoryLanguageTranslator(translator, nextTranslator);
			}
			else {
				translator = nextTranslator;
			}
			version = nextTranslator.getNewVersion();
		}

		if (translator != null && !translator.isValid()) {
			translator = null;
		}

		return translator;
	}
Build language version translator.  A default translator will be built if 
explicit translators have not been defined.
@param languageID
@param fromVersion
@param toVersion
@return language translator or null if one could not be built
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/LanguageTranslatorFactory.java