@Override
	public Language getLanguage(LanguageID languageId) {
		SleighLanguageDescription description = descriptions.get(languageId);
		SleighLanguage lang = languages.get(languageId);
		if (lang == null && description != null) {
			try {
				lang = new SleighLanguage(description);
				languages.put(languageId, lang);
			}
			catch (SleighException e) {
				Msg.showError(this, null, "Error",
					"Can't read language spec " + description.getSlaFile().getAbsolutePath(), e);
				throw e;
			}
			catch (DecoderException e) {
				Msg.showError(this, null, "Error",
					"Can't read language spec " + description.getSlaFile().getAbsolutePath(), e);
				throw new SleighException("Format violation in the .sla file", e);
			}
			catch (FileNotFoundException e) {
				Msg.showError(this, null, "Error",
					"Can't read language spec " + description.getSlaFile().getAbsolutePath(), e);
				throw new SleighException(
					"File not found - language probably did not compile properly", e);
			}
			catch (SAXException e) {
				Msg.showError(this, null, "Error",
					"Can't read language spec " + description.getSlaFile().getAbsolutePath(), e);
				throw new SleighException(
					"SAXException - language probably did not compile properly", e);
			}
			catch (IOException e) {
				Msg.showError(this, null, "Error",
					"Can't read language spec " + description.getSlaFile().getAbsolutePath(), e);
				throw new SleighException(
					"IOException - language probably did not compile properly", e);
			}
		}
		return lang;
	}
Construct language provider (intended for test use only)
@param ldefsFile language definitions file
@throws SAXException if parse error occurs
@throws IOException if IO error occurs
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/SleighLanguageProvider.java