public void doScore() {
			Collections.sort(entry); 		// Sort our entries via slot

			int nextfree = 0;				// Next slot we expect to see
			int basescore = 0;
			int[] penalty = new int[4];
			penalty[0] = 16;
			penalty[1] = 10;
			penalty[2] = 7;
			penalty[3] = 5;
			int penaltyfinal = 3;
			int mismatchpenalty = 20;

			for (PEntry p : entry) {
				if (p.slot > nextfree) {		// We have some kind of hole in our slot coverage
					while (nextfree < p.slot) {
						if (nextfree < 4) {
							basescore += penalty[nextfree];
						}
						else {
							basescore += penaltyfinal;
						}
						nextfree += 1;
					}
					nextfree += p.size;
				}
				else if (nextfree > p.slot) {		// Some kind of slot duplication
					basescore += mismatchpenalty;
					if (p.slot + p.size > nextfree) {
						nextfree = p.slot + p.size;
					}
				}
				else {
					nextfree = p.slot + p.size;
				}
			}
			finalscore = basescore + mismatchpenalty * mismatch;
		}
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