private void setupNearFarModels() {
		int countModels = 0;
		nearFarModels = new PrototypeModel[4];
		nearFarModels[0] = null;
		nearFarModels[1] = null;
		nearFarModels[2] = null;
		nearFarModels[3] = null;
		PrototypeModel[] models = program.getCompilerSpec().getCallingConventions();
		for (PrototypeModel model : models) {
			if (model.isMerged()) {
				continue;
			}
			int pos = -1;
			if (model.getStackshift() == 4) {
				if (model.getExtrapop() == PrototypeModel.UNKNOWN_EXTRAPOP) {
					pos = STDCALL_FAR;
				}
				else if (model.getExtrapop() == 4) {
					pos = CDECL_FAR;
				}
			}
			else if (model.getStackshift() == 2) {
				if (model.getExtrapop() == PrototypeModel.UNKNOWN_EXTRAPOP) {
					pos = STDCALL_NEAR;
				}
				else if (model.getExtrapop() == 2) {
					pos = CDECL_NEAR;
				}
			}
			if (pos >= 0) {
				if (nearFarModels[pos] == null) {
					nearFarModels[pos] = model;
					countModels += 1;
				}
			}
		}
		if (countModels < 4) {
			Msg.warn(this,
				"FunctionPurgeAnalysis is missing full range of near/far prototype models");
		}
	}
For x86 16-bit find the models stdcallnear, stdcallfar, cdeclnear, and cdeclfar so they can
be applied at the same time function purge is set.
Ghidra/Features/Base/src/main/java/ghidra/app/cmd/function/FunctionPurgeAnalysisCmd.java