void AddNewBranch(ISet<EquatableEdge<IBuilder>> graph, IBuilder rootBuilder)
{
log.DebugFormat("Adding new node: {0}", rootBuilder);
graph.Add(new EquatableEdge<IBuilder>(rootBuilder, rootBuilder));
foreach (var prereq in rootBuilder.Prerequisites)
{
var newEdge = new EquatableEdge<IBuilder>(rootBuilder, prereq);
if (!graph.Contains(newEdge))
{
AddEdge(graph, newEdge);
AddNewBranch(graph, prereq);
}
}
}