private void find() throws CancelledException {
		Stack<Node> path = new Stack<>();
		path.push(new Node(null, start));

		monitor.initialize(g.getEdgeCount());

		while (!path.isEmpty()) {

			monitor.checkCancelled();
			monitor.incrementProgress(1);
			Node node = path.peek();

			setStatus(node.v, STATUS.EXPLORING);

			if (node.v.equals(end)) {
				outputCircuit(path);
				node.setParentFound();
				path.pop();
			}
			else if (node.isExplored()) {
				node.setDone();
				path.pop();
			}
			else {
				node = node.getNext();
				path.push(node);
			}
		}
	}
Finds all paths between two vertices for a given graph.

<P>Note: this algorithm is based on the {@link JohnsonCircuitsAlgorithm}, modified to be
iterative instead of recursive. 

@param <V> the vertex type
@param <E> the edge type
Ghidra/Framework/Graph/src/main/java/ghidra/graph/algo/IterativeFindPathsAlgorithm.java