private Map<Address, RecoveredClass> dedupeMap(Map<Address, RecoveredClass> map)
			throws CancelledException {

		// Sort the vftable refs in the order they appear in the function
		Set<Address> vftableRefs = map.keySet();
		List<Address> vftableRefList = new ArrayList<Address>(vftableRefs);
		Collections.sort(vftableRefList);

		RecoveredClass lastClass = null;
		Address lastVftableRef = null;
		for (Address vftableRef : vftableRefList) {
			monitor.checkCancelled();
			RecoveredClass currentClass = map.get(vftableRef);

			if (lastClass != null && lastClass.equals(currentClass)) {
				// if vftable refs are within a few instructions, dedupe map
				if (numInstructionsApart(lastVftableRef, vftableRef) <= 3) {
					map.remove(vftableRef);
				}
			}

			lastClass = currentClass;
			lastVftableRef = vftableRef;
		}

		return map;
	}
Get the fixed functions that had incorrect data types due to incorrect FID (includes those
incorrect due to decompiler propagation of bad types from bad FID)
@return the fixed functions that had incorrect data types due to incorrect FID
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RecoveredClassHelper.java