private Set<VTMatch> findGoodImpliedMatches(Collection<VTMatch> matchesToProcess,
			int minVoteCountNeeded, int maxConflictsAllowed,
			TaskMonitor monitor) throws CancelledException {


		Set<VTMatch> goodImpliedMatches = new HashSet<>();

		for (VTMatch match : matchesToProcess) {
				monitor.checkCancelled();

				VTAssociation association = match.getAssociation();

				// skip if already accepted or blocked match
				if (association.getStatus() != VTAssociationStatus.AVAILABLE) {
					continue;
				}

				// skip if there are any conflicting associations
				int numConflicts = association.getRelatedAssociations().size() - 1;
				if (numConflicts > maxConflictsAllowed) {
					continue;
				}

				int voteCount = association.getVoteCount();

				if (voteCount >= minVoteCountNeeded) {
					goodImpliedMatches.add(match);
				}

				monitor.incrementProgress();
		}

		return goodImpliedMatches;

	}
Method to find good implied matches based on number of votes and conflicts
@param matchesToProcess the set of matches to process for good implied matches
@param minVoteCountNeeded the minimum vote count needed for a "good" implied match
@param maxConflictsAllowed the maximum number of conflicts allowed for a "good" implied match
@param monitor the monitor
@return a set of good implied matches based on the minVoteCountNeeded needed and
 maxConfictsAllowed
@throws CancelledException if cancelled
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingTask.java