private List<VTAssociation> findUniqueAssociationsUsingMaps(
			Map<Function, Map<Long, Map<Integer, Object>>> sourceFunctionsMap,
			Map<Function, Map<Long, Map<Integer, Object>>> destFunctionsMap,
			TaskMonitor monitor)
			throws CancelledException {

		List<VTAssociation> uniqueAssociations = new ArrayList<VTAssociation>();

		// for each source function, try to find a single matching destination function from 
		// the associated functions that have map info
		VTAssociationManager vtAssocManager = session.getAssociationManager();
		Set<Function> sourceFunctions = sourceFunctionsMap.keySet();

		Set<Function> matchedDestFunctions = new HashSet<Function>();

		for (Function sourceFunction : sourceFunctions) {
			monitor.checkCancelled();

			Map<Long, Map<Integer, Object>> sourceFunctionMap =
				sourceFunctionsMap.get(sourceFunction);

			Function destFunction =
				getSingleMatch(sourceFunctionMap, destFunctionsMap, matchedDestFunctions, monitor);

			if (destFunction == null) {
				continue;
			}

			// track matched destination functions so they are not checked again later
			matchedDestFunctions.add(destFunction);

			// add the association for the given src/dest pair to the list of good matches
			VTAssociation association = vtAssocManager
					.getAssociation(sourceFunction.getEntryPoint(), destFunction.getEntryPoint());
			if (association != null) {
				uniqueAssociations.add(association);
			}
		}
		return uniqueAssociations;
	}
Method to use the given function to operand maps, for sets of source and destination functions 
with identical instructions, to identify any unique src/dst matches within the set. 
instructions
@param sourceFunctionsMap the source functions map
@param destFunctionsMap the destination functions map
@param monitor the task monitor
@return the list of unique associations (src/dest function pairs) if any
@throws CancelledException if cancelled
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingTask.java