public static void CutNonReachable <TVertex, TEdge>(this IMutableBidirectionalGraph <TVertex, TEdge> graph,
                                                            IEnumerable <TVertex> toKeep)
            where TEdge : IEdge <TVertex>
        {
            var reachable = graph.FindReachable(toKeep);

            graph.RemoveVertexIf(x => !reachable.Contains(x));
        }