anchor.diff:  ///   * is a valid `tar.gz` file
   ///   * contains a valid `pubspec.yaml` file
   ///   * reads readme, changelog and pubspec files
  -///   * creates a [models.PackageVersion] and populates it with all metadata
  +///   * creates a [PackageVersion] and populates it with all metadata
   Future<_ValidatedUpload> _parseAndValidateUpload(
       DatastoreDB db, String filename, User user) async {
     assert(user != null);
   
     final archive = await summarizePackageArchive(filename);
     if (archive.hasIssues) {
  -    throw GenericProcessingException(archive.issues.first.message);
  +    throw pub_server.GenericProcessingException(archive.issues.first.message);
     }
   
     final pubspec = Pubspec.fromYaml(archive.pubspecContent);
     if (!await nameTracker.accept(pubspec.name)) {
  -    throw GenericProcessingException(
  +    throw pub_server.GenericProcessingException(
           'Package name is too similar to another active or moderated package.');
     }
   
     if (pubspec.hasBothAuthorAndAuthors) {
  -    throw GenericProcessingException(
  +    throw pub_server.GenericProcessingException(
           'Do not specify both `author` and `authors` in `pubspec.yaml`.');
     }
   
  -  final packageKey = db.emptyKey.append(models.Package, id: pubspec.name);
  +  final packageKey = db.emptyKey.append(Package, id: pubspec.name);
   
     final versionString = canonicalizeVersion(pubspec.version);
     if (versionString == null) {
  -    throw GenericProcessingException(
  +    throw pub_server.GenericProcessingException(
           'Unable to canonicalize the version: ${pubspec.version}');
     }
   
     final key =
  -      models.QualifiedVersionKey(package: pubspec.name, version: versionString);
  -
  -  final version = models.PackageVersion()
  +      QualifiedVersionKey(package: pubspec.name, version: versionString);
  +
  +  final version = PackageVersion()
       ..id = versionString
       ..parentKey = packageKey
       ..version = versionString
  
positive.code:     uploaderEmail = uploaderEmail.toLowerCase();
      final user = await requireAuthenticatedUser();
      return db.withTransaction((Transaction T) async {
        final packageKey = db.emptyKey.append(models.Package, id: packageName);
        final package = (await T.lookup([packageKey])).first as models.Package;
  
        await _validatePackageUploader(packageName, package, user.userId);
  
  
negative.code:   /// publisher admin).
    ///
    /// Returns false if the user is not an admin.
    Future<bool> isPackageAdmin(Package p, String userId) async {
      if (userId == null) {
        return false;
      }
  