static List<string> GetPackageNamesInContentBranch(DependencyResolutionResult source, IEnumerable<IPackageInfo> allPackages)
 {
     var visitor = new PackageGraphVisitor(allPackages);
     var packagesInContent = allPackages.Select(x => x.Name).ToList();
     var result = visitor.VisitFromLeafs((from, dep, to) =>
     {
         // check if parent is in content branch already
         var parentInContentBranch = from != null && packagesInContent.Contains(from.Name, StringComparer.OrdinalIgnoreCase);
         if (parentInContentBranch == false && dep.ContentOnly == false)
             packagesInContent.Remove(to.Name);
         return true;
     }, source.Descriptor.Dependencies);
     return packagesInContent;
 }
        public static IEnumerable <IPackageInfo> NotInContentBranch(this DependencyResolutionResult source)
        {
            var allPackages = source.SuccessfulPackages.Select(x => x.Packages.First());

            return(NotInContentBranch(allPackages, source.Descriptor.Dependencies));
        }