public static Set<VTImpliedMatchInfo> findImpliedMatches(Function sourceFunction,
			Function destinationFunction, VTSession session,
			AddressCorrelatorManager correlatorManager, TaskMonitor monitor)
			throws CancelledException {
		Set<VTImpliedMatchInfo> set = new HashSet<>();

		AddressCorrelation correlator =
			correlatorManager.getCorrelator(sourceFunction, destinationFunction);
		VTMatchSet possibleMatchSet = new MatchSetImpl(session, "Possible Implied Match");

		ReferenceManager referenceManager = sourceFunction.getProgram().getReferenceManager();
		AddressSetView body = sourceFunction.getBody();
		AddressIterator iterator = referenceManager.getReferenceSourceIterator(body, true);
		while (iterator.hasNext()) {
			monitor.checkCancelled();
			Address address = iterator.next();
			Reference[] referencesFrom = referenceManager.getReferencesFrom(address);
			for (Reference reference : referencesFrom) {
				monitor.checkCancelled();
				VTImpliedMatchInfo match = findImpliedMatch(correlator, sourceFunction,
					destinationFunction, reference, possibleMatchSet, monitor);

				if (match != null) {
					set.add(match);
				}
			}
		}

		return set;
	}
Method for finding version tracking implied matches given an accepted matched
function. Each referenced data and function that exist in equivalent sections
of the matched source and destination functions will be returned in the given set.

@param sourceFunction The matched function from the source program
@param destinationFunction The matched function from the destination program
@param session The Version Tracking session
@param correlatorManager Keeps track of which section of the source function corresponds to
the which section of the destination function
@param monitor Handles user cancellations
@return a set of VTImpliedMatchInfo objects
@throws CancelledException if cancelled
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/util/ImpliedMatchUtils.java