if (searchTreeRoot != null) { if (searchTreeCallback != null) searchTreeCallback.startSearchTree(searchTreeRoot); }
if (searchTreeCallback != null) searchTreeCallback.startSearchTree(searchTreeRoot);
	private void visitAll() {		for (;;) {			VertexType searchTreeRoot = getNextSearchTreeRoot();			if (searchTreeRoot == null)				// No more work to do				break;			if (searchTreeRoot != null) {				if (searchTreeCallback != null)					searchTreeCallback.startSearchTree(searchTreeRoot);			}			ArrayList<Visit> stack = new ArrayList<Visit>(graph.getNumVertexLabels());			stack.add(new Visit(searchTreeRoot));				while (!stack.isEmpty()) {				Visit visit = stack.get(stack.size() - 1);					if (visit.hasNextEdge()) {					// Continue visiting successors					EdgeType edge = visit.getNextEdge();					visitSuccessor(stack, edge);				} else {					// Finish the vertex					VertexType vertex = visit.getVertex();					setColor(vertex, BLACK);					topologicalSortList.addFirst(vertex);					setFinishTime(vertex, timestamp++);						stack.remove(stack.size() - 1);				}			}		}	}