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