public LocalPackageInfo AddPackage(LocalPackageInfo package)
        {
            var ct              = CancellationToken.None;
            var destPackageDir  = _pathResolver.GetPackageDirectory(package.Identity.Id, package.Identity.Version);
            var destPackagePath = _pathResolver.GetPackageFilePath(package.Identity.Id, package.Identity.Version);

            _fileSystem.MakeDirectoryForFile(destPackagePath);
            using (var downloader = new LocalPackageArchiveDownloader(package.Path, package.Identity, _logAdapter)) {
                downloader.CopyNupkgFileToAsync(destPackagePath, ct).Wait();
                var hashFilePath = Path.ChangeExtension(destPackagePath, PackagingCoreConstants.HashFileExtension);
                var hash         = downloader.GetPackageHashAsync("SHA512", ct).Result;
                var hashBytes    = Encoding.UTF8.GetBytes(hash);
                _fileSystem.AddFile(hashFilePath, hashFileStream => { hashFileStream.Write(hashBytes, 0, hashBytes.Length); });

                var nuspecPath = _pathResolver.GetManifestFilePath(package.Identity.Id, package.Identity.Version);
                using (var nuspecStream = File.OpenWrite(nuspecPath)) {
                    using (var fs = downloader.CoreReader.GetNuspecAsync(ct).Result) {
                        fs.CopyTo(nuspecStream);
                    }
                }
                _log.DebugFormat("Saved manifest {0}", nuspecPath);
                Lazy <NuspecReader> nuspecReader = new Lazy <NuspecReader>(() => new NuspecReader(nuspecPath));
                var packageReader = new Func <PackageReaderBase>(() => new PackageArchiveReader(File.OpenRead(destPackagePath)));
                return(new LocalPackageInfo(package.Identity, destPackagePath, package.LastWriteTimeUtc, nuspecReader, packageReader));
            }
        }