public PrototypeModel selectModel(Parameter[] params) throws SleighException {
		int bestscore = 500;
		int bestindex = -1;
		for (int i = 0; i < modellist.length; ++i) {
			ScoreProtoModel scoremodel = new ScoreProtoModel(true, modellist[i], params.length);
			for (Parameter p : params) {
				VariableStorage storage = p.getVariableStorage();
				if (storage.isUnassignedStorage() || storage.isBadStorage()) {
					continue;
				}
				scoremodel.addParameter(storage.getMinAddress(), p.getLength());
			}
			scoremodel.doScore();
			int score = scoremodel.getScore();
			if (score < bestscore) {
				bestscore = score;
				bestindex = i;
				if (bestscore == 0) {
					break;				// Can't get any lower
				}
			}
		}
		if (bestindex >= 0) {
			return modellist[bestindex];
		}
		throw new SleighException("No model matches : missing default");
	}
This model serves as a placeholder for multiple model
Currently all the models being selected between must share the same output model
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/PrototypeModelMerged.java