anchor.diff:        packageName, versions, dartdocEntries, versionDownloadUrls));
   }
   
  -Future<shelf.Response> _packageVersionHandlerHtmlCore(
  -    shelf.Request request,
  -    String packageName,
  -    String render(
  -        Package package,
  -        bool isVersionPage,
  -        List<PackageVersion> first10Versions,
  -        List<DartdocEntry> dartdocEntries,
  -        List<Uri> versionDownloadUrls,
  -        PackageVersion selectedVersion,
  -        PackageVersion latestStableVersion,
  -        PackageVersion latestDevVersion,
  -        int totalNumberOfVersions,
  -        AnalysisExtract extract,
  -        AnalysisView analysis),
  +/// Handles requests for /packages/<package>
  +/// Handles requests for /packages/<package>/versions/<version>
  +Future<shelf.Response> _packageVersionHandlerHtml(
  +    shelf.Request request, String packageName,
       {String versionName}) async {
     if (redirectPackagePages.containsKey(packageName)) {
       return redirectResponse(redirectPackagePages[packageName]);
  
positive.code:       return backend.downloadUrl(packageName, version.version);
      }).toList());
  
      cachedPage = render(
          package,
          versionName != null,
          first10Versions,
  
negative.code:   if (segments[2] == 'versions') {
      if (segments.length == 4) {
        final String version = Uri.decodeComponent(segments[3]);
        return _packageVersionHandlerHtml(request, package, versionName: version);
      } else {
        return _packageVersionsHandler(request, package);
      }
  