private static DependenciesLayer BuildLayer(IList <GraphNode> allNodes, int number)
        {
            var firstLayer = new DependenciesLayer {
                Number = number
            };

            firstLayer.Nodes.AddRange(
                allNodes.Where(n => n.IncomingDependencies.Count == 0)
                .ToArray());
            ClearUsedDependencies(allNodes, firstLayer);
            return(firstLayer);
        }
 private static void ClearUsedDependencies(IList <GraphNode> allNodes, DependenciesLayer currentLayer)
 {
     foreach (var solution in currentLayer.Nodes)
     {
         foreach (var node in allNodes)
         {
             if (node.IncomingDependencies.Contains(solution))
             {
                 node.IncomingDependencies.Remove(solution);
             }
         }
     }
 }