public synchronized boolean hasCycles() {
		try {
			Set<T> visited = createNodeSet();

			while (!unvisitedIndependentSet.isEmpty()) {
				Collection<T> values = getUnvisitedIndependentValues();
				visited.addAll(values);

				for (T k : values) {
					DependencyNode node = nodeMap.get(k);
					node.releaseDependencies();
				}
			}
			if (visited.size() != nodeMap.size()) {
				return true;
			}
		}
		finally {
			reset();
		}
		return false;
	}
Checks if this graph has cycles.  Normal processing of this graph will eventually reveal
a cycle and throw an exception at the time it is detected.  This method allows for a 
"fail fast" way to detect cycles.
@return true if cycles exist in the graph.
Ghidra/Framework/Generic/src/main/java/ghidra/util/graph/AbstractDependencyGraph.java