anchor.diff:          .toList();
       final pubPackages = <String, PackageView>{};
       for (final view in await getPackageViews(packageNames)) {
  +      // The package may have been deleted, but the index still has it.
  +      if (view == null) continue;
         pubPackages[view.name] = view;
       }
   
  
positive.code:   Future close() async {}
  
    /// Returns the [PackageView] instance for [package] on its latest stable version.
    Future<PackageView> _getPackageView(String package) async {
      return await cache.packageView(package).get(() async {
        final p = await packageBackend.lookupPackage(package);
        if (p == null) return null;
  
        final version = p.latestVersion;
        final pvFuture = packageBackend.lookupPackageVersion(package, version);
  
negative.code: 
    /// Returns the [PackageView] instance for each package in [packages], using
    /// the latest stable version.
    ///
    /// If the package does not exist, it will return null in the given index.
    Future<List<PackageView>> getPackageViews(List<String> packages) async {
      // TODO: consider a cache-check first and batch-load the rest of the packages
      return await Future.wait(packages.map((p) => _getPackageView(p)));
  