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(); }