private FidSearchResult processMatches(Function function, HashFamily family,
			TaskMonitor monitor) throws CancelledException {
		List<HashMatch> hashMatches = lookupFamily(family, monitor);
		FidSearchResult searchResult = null;
		if (!hashMatches.isEmpty()) {
			if (hashMatches.size() == 1) {
				FidMatchScore hashMatch = hashMatches.get(0);
				searchResult = makeSingletonMatch(function, family, hashMatch);
			}
			else {
				ArrayList<HashMatch> culledHashMatches = new ArrayList<HashMatch>();
				culledHashMatches.add(hashMatches.get(0));
				final float maxOverall = hashMatches.get(0).getOverallScore();
				for (int ii = 1; ii < hashMatches.size(); ++ii) {
					monitor.checkCancelled();
					HashMatch hashMatch = hashMatches.get(ii);
					if (hashMatch.getOverallScore() < maxOverall) {
						break;
					}
					culledHashMatches.add(hashMatch);
				}
				if (culledHashMatches.size() == 1) {
					FidMatchScore hashMatch = culledHashMatches.get(0);
					searchResult = makeSingletonMatch(function, family, hashMatch);
				}
				else {
					searchResult = makeAllMatches(function, family, culledHashMatches, monitor);
				}
			}
		}
		return searchResult;
	}
Given HashFamily for a function, lookup possible matches and mint FidSearchResult objects
@param function the function
@param family the hash family
@param monitor a task monitor
@return the FidSearchResult describing any discovered matches
@throws CancelledException if the user cancels
Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/service/FidProgramSeeker.java