private Collection retrieve(TableRow row) {
    if (row == null) {
      return null;
    }

    int id = row.getIntColumn("collection_id");
    Collection collection = new Collection(context, id);
    populateCollectionFromTableRow(collection, row);

    // FIXME: I'd like to bump the rest of this up into the superclass
    // so we don't have to do it for every implementation, but I can't
    // figure out a clean way of doing this yet.
    List<ExternalIdentifier> identifiers = identifierDAO.getExternalIdentifiers(collection);
    collection.setExternalIdentifiers(identifiers);

    return collection;
  }