A straight forward Graph class with Nodes that support custom Marks.
The most interesting part is the Graph#topologicalSort() method, which uses Tarjan's Strongly Connected Components Algorithm, so it can report exactly which cycles where found.
8000