public static <V, E extends GEdge<V>> List<List<V>> findCircuits(GDirectedGraph<V, E> g,
			boolean uniqueCircuits, TimeoutTaskMonitor monitor)
			throws CancelledException, TimeoutException {

		ListAccumulator<List<V>> accumulator = new ListAccumulator<>();
		JohnsonCircuitsAlgorithm<V, E> algorithm = new JohnsonCircuitsAlgorithm<>(g, accumulator);
		algorithm.compute(uniqueCircuits, monitor);
		return accumulator.asList();
	}
Finds all the circuits, or cycles, in the given graph.  <B>This version
of <code>findCircuits()</code> takes a {@link TimeoutTaskMonitor}, which allows for the 
client to control the duration of work.</B>   This is useful for finding paths on very
large, dense graphs.

@param g the graph
@param uniqueCircuits true signals to return only unique circuits, where no two 
       circuits will contain the same vertex
@param monitor the timeout task monitor
@return the circuits
@throws CancelledException if the monitor is cancelled
@throws TimeoutException if the algorithm times-out, as defined by the monitor
Ghidra/Framework/Graph/src/main/java/ghidra/graph/GraphAlgorithms.java