anchor.diff:    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'],
  
positive.code:   return processResult.exitCode;
  }
  
  void moveDocumentationPackages(Package package, String version) {
    String out = join(BUILD_DOCUMENTATION_ROOT_PATH, "${package.name}-${version}",
        DARTDOC_VIEWER_OUT);
  
negative.code:   }
  }
  
  /**
   * Fetch packages.json file and return PubPackages
   */
  Future<PubPackages> fetchPackages([String page]) {
    // TODO(adam): implement `page` so any page could be fetched.
    return http.get(PACKAGES_DATA_URI).then((response) {
      var data = JSON.decode(response.body);
      PubPackages pubPackages = new PubPackages.fromJson(data);
  