protected String modelXrefs(List<PrototypeModel> modelList, String defaultName,
			String evalCurrent, String evalCalled) throws XmlParseException {
		String foundDuplicate = null;
		buildModelArrays(modelList, defaultName);
		callingConventionMap = new HashMap<>();
		for (PrototypeModel model : models) {
			String name = model.getName();
			if (name != null) {
				PrototypeModel previous = callingConventionMap.put(name, model);
				if (previous != null) {
					foundDuplicate = name;
				}
			}
		}

		defaultModel = callingConventionMap.get(defaultName);
		evalCurrentModel = defaultModel; // The default evaluation is to assume default model
		evalCalledModel = defaultModel;

		for (PrototypeModel evalmodel : allmodels) {
			if (evalCurrent != null && evalmodel.getName().equals(evalCurrent)) {
				evalCurrentModel = evalmodel;
			}
			if (evalCalled != null && evalmodel.getName().equals(evalCalled)) {
				evalCalledModel = evalmodel;
			}
		}
		return foundDuplicate;
	}
Establish cross referencing to prototype models.
All xrefs are regenerated from a single complete list of PrototypeModels.
If there are PrototypeModels with duplicate names, return an example name.
Return null otherwise
The modelList must provide a model with name matching defaultName or
an exception is thrown.  (In theory the schema guarantees this model always exists)

@param modelList is the complete list of models
@param defaultName is the name to use for the default model
@param evalCurrent is the name to use for evaluating the current function (or null)
@param evalCalled is the name to use for evaluating called functions (or null)
@return a PrototypeModel name that was duplicated or null
@throws XmlParseException if there is no model matching defaultName
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/BasicCompilerSpec.java