public IGraph Copy()

in tool/TeamCity.Docker/Generic/Graph.cs [76:97]


        public IGraph<TNode, TLink> Copy(Predicate<INode<TNode>> filter)
        {
            var clone = new Graph<TNode, TLink>(_nodeComparer, _linkComparer);
            var newNodes = Nodes
                .Where(node => filter(node))
                .Select(node =>
                {
                    clone.TryAddNode(node.Value, out var newNode);
                    return new { node, newNode};
                })
                .ToDictionary(i => i.node, i => i.newNode);

            foreach (var link in Links)
            {
                if (newNodes.TryGetValue(link.From, out _) && newNodes.TryGetValue(link.To, out _))
                {
                    clone.TryAddLink(newNodes[link.From], link.Value, newNodes[link.To], out var _);
                }
            }

            return clone;
        }