private void calculatePathsBetweenVerticesAsync(V v1, V v2) {

		if (v1.equals(v2)) {
			return;
		}

		CallbackAccumulator<List<V>> accumulator = new CallbackAccumulator<>(path -> {

			Collection<E> edges = pathToEdgesAsync(path);
			SystemUtilities.runSwingLater(() -> setInHoverPathOnSwing(edges));
		});

		TaskMonitor timeoutMonitor = TimeoutTaskMonitor.timeoutIn(ALGORITHM_TIMEOUT,
			TimeUnit.SECONDS, new TaskMonitorAdapter(true));

		try {
			GraphAlgorithms.findPaths(graph, v1, v2, accumulator, timeoutMonitor);
		}
		catch (ConcurrentModificationException e) {
			// TODO temp fix for 8.0.   
			// This exception can happen when the current graph is being mutated off of the 
			// Swing thread, such as when grouping and ungrouping.  For now, squash the 
			// problem, as it is only a UI feature.   Post-"big graph branch merge", update 
			// how we schedule this task in relation to background graph jobs (maybe just make
			// this task a job)
		}
		catch (CancelledException e) {
			SystemUtilities.runSwingLater(
				() -> setStatusTextSwing("Path computation halted by user or timeout.\n" +
					"Paths shown in graph are not complete!"));
		}

	}
Signals to this path highlighter that it should stop all background jobs
Ghidra/Framework/Graph/src/main/java/ghidra/graph/viewer/edge/VisualGraphPathHighlighter.java