code: func (d *DepthFirst) WalkAll(g graph.Undirected, before, after func(), during func(graph.Node)) {
  	d.Reset()
  	for _, from := range g.Nodes() {
  		if d.Visited(from) {
  			continue
  		}
  		if before != nil {
  			before()
  		}
  		d.Walk(g, from, func(n graph.Node) bool {
  			if during != nil {
  				during(n)
  			}
  			return false
  		})
  		if after != nil {
  			after()
  		}
  	}
  }
docs: // WalkAll calls Walk for each unvisited node of the graph g using edges independent
  // of their direction. The functions before and after are called prior to commencing
  // and after completing each walk if they are non-nil respectively. The function
  // during is called on each node as it is traversed.