async Task RestoreAndCheckForUpdates(Solution solution)
        {
            bool checkUpdatesAfterRestore = ShouldCheckForUpdates && AnyProjectHasPackages(solution);

            var action = new RestoreAndCheckForUpdatesAction(solution)
            {
                CheckForUpdatesAfterRestore = checkUpdatesAfterRestore
            };
            bool packagesToRestore = await action.HasMissingPackages();

            if (packagesToRestore)
            {
                ProgressMonitorStatusMessage message = ProgressMonitorStatusMessageFactory.CreateRestoringPackagesInSolutionMessage();
                PackageManagementServices.BackgroundPackageActionRunner.Run(message, action);
            }
            else if (checkUpdatesAfterRestore)
            {
                CheckForUpdates(solution);
            }
        }
		async Task RestoreAndCheckForUpdates (Solution solution)
		{
			bool checkUpdatesAfterRestore = ShouldCheckForUpdates && AnyProjectHasPackages (solution);

			var action = new RestoreAndCheckForUpdatesAction (solution) {
				CheckForUpdatesAfterRestore = checkUpdatesAfterRestore
			};
			bool packagesToRestore = await action.HasMissingPackages ();
			if (packagesToRestore) {
				ProgressMonitorStatusMessage message = ProgressMonitorStatusMessageFactory.CreateRestoringPackagesInSolutionMessage ();
				PackageManagementServices.BackgroundPackageActionRunner.Run (message, action);
			} else if (checkUpdatesAfterRestore) {
				CheckForUpdates (solution);
			}
		}