public static MutableGraph <R> Clone <T, R>(this BidirectionalGraph <T, Edge <T> > graph, Func <T, R> selector, Func <R, bool> condition)
            where R : class
        {
            var newGraph    = BidirectionalGraphExtensions.NewGraph <R>(graph.AllowParallelEdges);
            var verticesMap = graph.CopyVertices <T, R>(newGraph, selector, condition);

            graph.CopyEdges <T, R>(newGraph, verticesMap);
            return(new MutableGraph <R>(newGraph));
        }