protected void installExtensions() {
		int storedVersion = SpecExtension.getVersionCounter(program);
		if (storedVersion == versionCounter) {
			return;		// We currently match stored version, nothing to update
		}
		versionCounter = storedVersion;		// Update ourselves to stored version
		List<Pair<String, String>> pairList = SpecExtension.getCompilerSpecExtensions(program);
		if (pairList.isEmpty() && usermodels == null && pcodeInject.getProgramPayloads() == null) {
			return;		// No change
		}
		if (usermodels != null) {
			removeProgramMechanismPayloads(usermodels.values());
		}
		ArrayList<PrototypeModel> modelExtensions = new ArrayList<>();
		ArrayList<InjectPayloadSleigh> injectExtensions = new ArrayList<>();
		ArrayList<String> errorList = null;
		for (Pair<String, String> pair : pairList) {
			try {
				Object obj = SpecExtension.parseExtension(pair.first, pair.second, this, true);
				if (obj instanceof PrototypeModel) {
					PrototypeModel prototypeModel = (PrototypeModel) obj;
					modelExtensions.add(prototypeModel);
					errorList = addPrototypeError(errorList, prototypeModel);
				}
				else if (obj instanceof InjectPayloadSleigh) {
					InjectPayloadSleigh payload = (InjectPayloadSleigh) obj;
					injectExtensions.add(payload);
					errorList = addPayloadError(errorList, payload);
				}
			}
			catch (Exception e) {
				Msg.error(this,
					"Bad compiler spec extension: " + pair.first + " - " + e.getMessage());
			}
		}
		installPrototypeExtensions(modelExtensions);
		registerProgramInject(injectExtensions);
		updateModelChoices();
		reportExtensionErrors(errorList);
	}
Update this object with any program specific compiler specification extensions.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramCompilerSpec.java