addEdge method
- Edge<
E> edge 
override
    Adds an edge from to the graph.
Returns true if the edge was added, false if it was already present.
If the edge was added, the graph must:
- Add the edge to the graph so that containsEdge returns 
true; - Yield 
targetas a successor ofsourcein successors; - If 
sourcehas no predecessors, returntruefor containsRoot; 
In addition, the graph may, depending on the implementation:
- Add 
sourceandtargetto the graph if they are not already present; - Consider the inverse also an edge, i.e. for undirected graphs.
 
Implementation
@override
bool addEdge(Edge<E> edge) {
  final a = super.addEdge(edge);
  final b = super.addEdge(edge.reversed);
  assert(a == b, 'Inconsistent undirected edges');
  return a;
}