public AbstractDependencyGraph<Address> getDependencyGraph(TaskMonitor monitor)
			throws CancelledException {

		AbstractDependencyGraph<Address> graph = new DependencyGraph<>();
		Deque<Address> startPoints = findStartPoints();
		Set<Address> unprocessed = new TreeSet<>(functionSet); // reliable processing order
		monitor.initialize(unprocessed.size());
		while (!unprocessed.isEmpty()) {
			monitor.checkCancelled();
			Address functionEntry = getNextStartFunction(startPoints, unprocessed);
			processForward(graph, unprocessed, functionEntry, monitor);
		}

		return graph;
	}
Builds the DependencyGraph for the acyclic call graph represented by this object.
@param monitor the taskMonitor to use for reporting progress or cancelling.
@return the DependencyGraph for the acyclic call graph represented by this object.
@throws CancelledException if the monitor was cancelled.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/util/AcyclicCallGraphBuilder.java