anchor.diff:    });
   }
   
  +/**
  + * Fetch a particular `<package>.json` file and return `Package`
  + */
   Future<Package> fetchPackage(String packageJsonUri) {
     return http.get(packageJsonUri).then((response) {
       var data = JSON.decode(response.body);
  
positive.code:   }
  }
  
  Future<PubPackages> fetchPackages() {
    return http.get(PACKAGES_DATA_URI).then((response) {
      var data = JSON.decode(response.body);
      PubPackages pubPackages = new PubPackages.fromJson(data);
  
negative.code:   return pubSpecData.toString();
  }
  
  @deprecated
  String generateStorageLocation(String packageName, String packageVersion) {
    return "${PACKAGE_STORAGE_ROOT}/${packageName}/${packageVersion}";
  }
  
  @deprecated
  Future<int> buildDocumentationCache(Package package) {
    // TODO(adam): make this run sync to avoid out of memory exceptions
    return Process.run('pub', ['cache', 'add', package.name, '--all'],
  