private static async Task<bool> RestorePackageAsync(NuGetPackageManager nuGetPackageManager,
            PackageIdentity packageIdentity,
            INuGetProjectContext nuGetProjectContext,
            EventHandler<PackageRestoredEventArgs> packageRestoredEvent,
            IEnumerable<SourceRepository> sourceRepositories,
            CancellationToken token)
        {
            bool restored = await nuGetPackageManager.RestorePackageAsync(packageIdentity, nuGetProjectContext, sourceRepositories, token);
            // At this point, it is guaranteed that package restore did not fail
            if(packageRestoredEvent != null)
            {
                packageRestoredEvent(null, new PackageRestoredEventArgs(packageIdentity, restored));
            }

            return restored;
        }