private void findMatches() throws MemoryAccessException, CancelledException {
		while (!srcStore.isEmpty() && !destStore.isEmpty()) {
			HashEntry srcEntry = srcStore.getFirstEntry();
			HashEntry destEntry = destStore.getEntry(srcEntry.hash);
			if (destEntry == null) {
				srcStore.removeHash(srcEntry);	// No match at all
			}
			else if (srcEntry.instList.size() == 1 && destEntry.instList.size() == 1) {
				// Found a unique match
				declareMatch(srcEntry, srcEntry.instList.getFirst(), destEntry,
					destEntry.instList.getFirst());
			}
			else {
				HashEntry destEntry2 = destStore.getFirstEntry();
				HashEntry srcEntry2 = srcStore.getEntry(destEntry2.hash);
				if (srcEntry2 == null) {
					destStore.removeHash(destEntry2);	// No match at all
				}
				else if (srcEntry2.instList.size() == 1 && destEntry2.instList.size() == 1) {
					// Found a unique match
					declareMatch(srcEntry2, srcEntry2.instList.getFirst(), destEntry2,
						destEntry2.instList.getFirst());
				}
				else {
					if (!disambiguateMatchingNgrams(srcEntry, destEntry))
						srcStore.removeHash(srcEntry);
				}
			}
		}
	}
Check for matches through one set of n-grams.  If non-unique matches exist, attempt to disambiguate.
This assumes that the srcStore and destStore HashStores have already been populated with the n-gram lists
@throws MemoryAccessException
@throws CancelledException
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/correlate/HashedFunctionAddressCorrelation.java