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