public void discoverPotentialMatches(TaskMonitor monitor) throws Exception {

		BinningSystem binning = new BinningSystem(memoryModel);
		monitor.setMessage("Binning source functions...");
		monitor.initialize(sourceNodes.size());
		binning.add(sourceNodes.iterator(), monitor);

		monitor.setMessage("Zealously over-pairing matches...");
		monitor.initialize(destNodes.size());

		//
		// Queue setup
		//
		GThreadPool pool = GThreadPool.getPrivateThreadPool("BSimProgramCorrelatorMatching");
		QCallback<FunctionNode, List<FunctionPair>> callback =
			new MatchingCallback(binning, potentialSimThreshold);

		// @formatter:off
		ConcurrentQ<FunctionNode, List<FunctionPair>> queue = 
			new ConcurrentQBuilder<FunctionNode, List<FunctionPair>>()					
				.setThreadPool(pool)
				.setCollectResults(true)
				.setMonitor(monitor)
				.build(callback);
		// @formatter:on

		//
		// Submit and wait for results
		//
		queue.add(destNodes.iterator());

		Collection<QResult<FunctionNode, List<FunctionPair>>> results;
		try {
			results = queue.waitForResults();
		}
		finally {
			queue.dispose();
		}

		discoveredMatches = new LinkedList<FunctionPair>();
		for (QResult<FunctionNode, List<FunctionPair>> result : results) {
			monitor.checkCancelled();
			List<FunctionPair> pieces = result.getResult();
			if (pieces == null) {
				continue;
			}
			for (FunctionPair bridge : pieces) {
				monitor.checkCancelled();
				if (bridge != null) {
					FunctionNode sourceNode = bridge.getSourceNode();
					FunctionNode destNode = bridge.getDestNode();
					sourceNode.addAssociate(destNode, bridge);
					destNode.addAssociate(sourceNode, bridge);
					discoveredMatches.add(bridge);
				}
			}
		}
	}
Do vector comparisons between the source and destination FunctionNodes.
Anything discovered that exceeds {@link #potentialSimThreshold} is placed into {@link #discoveredMatches}
A {@link BinningSystem} is built, then individual FunctionNodes are searched in parallel.
@param monitor is the TaskMonitor
@throws Exception for user cancellation or other problems
Ghidra/Features/VersionTrackingBSim/src/main/java/ghidra/feature/vt/api/BSimProgramCorrelatorMatching.java