code: public static final <Vertex> Set<SCComponent<Vertex>>
  	buildScc(final DiGraph<Vertex> diGraph) {
  	return
  	    (new BuildSCCClosure<Vertex>()).doIt(diGraph.getRoots(),
  						 diGraph.getBiDiNavigator());
      }
docs: Splits a directed graph into the set of its strongly-connected
  components.  The complexity is linear in the size of the
  original digraph (nb. of vertices + nb. of arcs).  We use the
  algorithm from the DFS-based algorithm from Cormen, Leiserson,
  Rivest, MIT Press, 19th Edition, 1997, Section 23.5, an
  efficient and simple algorithm.
  
  @param diGraph Directed graph
  
  @return Set of top-level strongly-connected components (ie,
  SCCs that are not pointed to by anybody).  The client may
  mutate this set, with no effect on the original digraph
  <code>diGraph</code>.