public bool IsEdge(TVertex source, TVertex dest)
 => OutgoingEdges.TryGetValue(source, out var childrenMap) &&
 childrenMap.Any() &&
 childrenMap.TryGetValue(dest, out var edges) &&
 edges.Any();
 public bool ContainsVertex(TVertex vertex)
 => OutgoingEdges.ContainsKey(vertex);
 public IEnumerable <TVertex> GetChildren(TVertex vertex)
 => OutgoingEdges.TryGetValue(vertex, out var childMap)
         ? childMap.Keys
         : Enumerable.Empty <TVertex>();
 public void Clear()
 {
     IncomingEdges.Clear();
     OutgoingEdges.Clear();
 }
 internal void Remove(long id)
 {
     IncomingEdges = IncomingEdges.Where(e => e.Id == id).ToList();
     OutgoingEdges = OutgoingEdges.Where(e => e.Id == id).ToList();
 }