static void IdentifyStaleSolutions(string targetDirectory)
        {
            ConcurrentDictionary <string, string[]> solutionsWithStaleProjects = new ConcurrentDictionary <string, string[]>();
            IEnumerable <string> slnsInDirectory = Directory.EnumerateFiles(targetDirectory, "*.sln", SearchOption.AllDirectories);

            Parallel.ForEach(slnsInDirectory, slnFile =>
            {
                string[] staleProjectsInSolution = StaleDependencies.IdentifyStaleDependencies(slnFile).ToArray();

                if (staleProjectsInSolution.Any())
                {
                    solutionsWithStaleProjects.TryAdd(slnFile, staleProjectsInSolution);
                }
            }
                             );

            foreach (KeyValuePair <string, string[]> solutionWithStaleProjects in solutionsWithStaleProjects.OrderBy(kvp => kvp.Key))
            {
                Console.WriteLine($"== {solutionWithStaleProjects.Key} {solutionWithStaleProjects.Value.Length} == ");
                foreach (string result in solutionWithStaleProjects.Value)
                {
                    Console.WriteLine(result);
                }
                Console.WriteLine();
            }
        }
        static void ModifyStaleSolutions(string targetDirectory)
        {
            IEnumerable <string> slnsInDirectory = Directory.EnumerateFiles(targetDirectory, "*.sln", SearchOption.AllDirectories);

            Parallel.ForEach(slnsInDirectory, slnFile =>
            {
                string[] staleProjects = StaleDependencies.IdentifyStaleDependencies(slnFile).ToArray();

                if (staleProjects.Any())
                {
                    Console.WriteLine($"Modifying {slnFile}");
                    SolutionModificationUtilities.RemoveProjectsFromSolution(slnFile, staleProjects);
                }
            }
                             );
        }