private static TreeMap<Hash, DisambiguatorEntry> constructDisambiguatorTree(HashEntry entry,
			HashStore store, DisambiguateStrategy strategy)
			throws CancelledException, MemoryAccessException {
		TreeMap<Hash, DisambiguatorEntry> entryMap = new TreeMap<Hash, DisambiguatorEntry>();
		int matchSize = entry.hash.size;
		for (InstructHash curInstruct : entry.instList) {
			ArrayList<Hash> hashList = strategy.calcHashes(curInstruct, matchSize, store);
			Iterator<Hash> iter = hashList.iterator();
			while (iter.hasNext()) {
				Hash curHash = iter.next();
				DisambiguatorEntry curEntry = entryMap.get(curHash);
				if (curEntry == null) {
					curEntry = new DisambiguatorEntry(curHash, curInstruct);
					entryMap.put(curHash, curEntry);
				}
				else
					curEntry.count += 1;
			}
		}
		return entryMap;
	}
Given multiple n-grams producing the same hash, generate secondary hashes based on the each n-gram and
its containing block, using the DisambiguateStrategy.  Generate a histogram of secondary hashes and return
it to the caller.
@param entry is the HashEntry producing the duplicates
@param strategy is the DisambiguateStrategy to use to produce secondary hashes
@return the map of DisambiguatorEntry objects containing the histogram counts
@throws CancelledException
@throws MemoryAccessException
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/correlate/HashedFunctionAddressCorrelation.java