code: @Override
  	public void checkGraph() throws AsymmetricException, CycleException, EX {
  		Set<V> vertices = graph.getVertices();
  		Map<V,Color> colors = new HashMap<>(vertices.size()*4/3+1);
  		Map<V,V> predecessors = new HashMap<>(); // Could this be a simple sequence like TopologicalSorter?  Any benefit?
  		for(V v : vertices) {
  			if(!colors.containsKey(v)) doCheck(colors, predecessors, v);
  		}
  	}
docs: Test the graph for cycles and makes sure that all connections are consistent with back connections.
  
  Cycle algorithm adapted from:
  http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/GraphAlgor/depthSearch.htm
  http://www.eecs.berkeley.edu/~kamil/teaching/sp03/041403.pdf
  
  In the case of a multigraph, any number of edges one direction is considered a match to any number
  of edges back.  The number does not need to be equal.
  
  @throws AsymmetricException where the edges are not symmetric
  @throws CycleException if there is a cycle in the graph