using System.Collections.Generic;
public static void Main()
IEnumerable<int> GetDependencyGraphWithSkipToNext()
var DependencyGraph = Enumerable.Range(0, 20);
HashSet<int> pendingTypes;
void refreshPendingTypes(int i)
Console.WriteLine("refreshing: " + i);
pendingTypes = Enumerable.Range(0, ++i).ToHashSet();
foreach (var type in DependencyGraph.Where(z => pendingTypes.Contains(z)))
refreshPendingTypes(type+1);
GetDependencyGraphWithSkipToNext().ToArray();