public static void updateImpliedMatchForClearedAssocation(Function sourceFunction,
			Function destinationFunction, VTSession session,
			AddressCorrelatorManager correlatorManager, TaskMonitor monitor)
			throws CancelledException {

		Set<VTImpliedMatchInfo> impliedMatches = ImpliedMatchUtils.findImpliedMatches(
			sourceFunction, destinationFunction, session, correlatorManager, monitor);

		for (VTImpliedMatchInfo impliedMatch : impliedMatches) {
			Address sourceAddress = impliedMatch.getSourceAddress();
			Address destinationAddress = impliedMatch.getDestinationAddress();
			VTAssociation existingAssociation =
				session.getAssociationManager().getAssociation(sourceAddress, destinationAddress);

			if (existingAssociation != null) {
				int newVoteCount = Math.max(0, existingAssociation.getVoteCount() - 1);
				existingAssociation.setVoteCount(newVoteCount);
				if (newVoteCount == 0) {
					removeImpliedMatch(existingAssociation);
				}
			}
		}
	}
Called when a {@link VTAssociation} is cleared.  This method will create implied matches in
the current session based on the association.
@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
@throws CancelledException if cancelled
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/util/ImpliedMatchUtils.java