private NuGet.Versioning.NuGetVersion BestLibraryVersion(string name, NuGet.Versioning.VersionRange range, IList <NuGet.ProjectModel.LockFileLibrary> libraries)
        {
            var versions  = libraries.Where(lib => lib.Name == name).Select(lib => lib.Version);
            var bestMatch = range.FindBestMatch(versions);

            if (bestMatch == null)
            {
                if (versions.Count() == 1)
                {
                    return(versions.First());
                }
                else
                {
                    Console.WriteLine($"WARNING: Unable to find a version to satisfy range {range.PrettyPrint()} for the dependency " + name);
                    if (range.HasUpperBound && !range.HasLowerBound)
                    {
                        Console.WriteLine($"Instead will return the maximum range demanded: " + range.MaxVersion.ToFullString());
                        return(range.MaxVersion);
                    }
                    else
                    {
                        Console.WriteLine($"Instead will return the minimum range demanded: " + range.MinVersion.ToFullString());
                        return(range.MinVersion);
                    }
                }
            }
            else
            {
                return(bestMatch);
            }
        }