Status AuthzManagerExternalStateMongod::getStoredAuthorizationVersion(int* outVersion) {
     {
         Client::GodScope gs;
         Client::ReadContext ctx(AuthorizationManager::versionCollectionNamespace.ns());
         BSONObj versionDoc;
         if (Helpers::findOne(AuthorizationManager::versionCollectionNamespace.ns(),
                              BSON("_id" << 1),
                              versionDoc)) {
             BSONElement versionElement = versionDoc["currentVersion"];
             if (versionElement.isNumber()) {
                 *outVersion = versionElement.numberInt();
                 return Status::OK();
             }
             else if (versionElement.eoo()) {
                 return Status(ErrorCodes::NoSuchKey, "No currentVersion field in version document.");
             }
             else {
                 return Status(ErrorCodes::TypeMismatch, mongoutils::str::stream() <<
                               "Bad (non-numeric) type " << versionElement.type() <<
                               "for currentVersion field in version document");
             }
         }
     }
     if (hasAnyPrivilegeDocuments()) {
         *outVersion = 1;
     }
     else {
         *outVersion = 2;
     }
     return Status::OK();
 }
 Status AuthzManagerExternalStateLocal::getStoredAuthorizationVersion(int* outVersion) {
     BSONObj versionDoc;
     Status status = findOne(AuthorizationManager::versionCollectionNamespace,
                             AuthorizationManager::versionDocumentQuery,
                             &versionDoc);
     if (status.isOK()) {
         BSONElement versionElement = versionDoc[AuthorizationManager::schemaVersionFieldName];
         if (versionElement.isNumber()) {
             *outVersion = versionElement.numberInt();
             return Status::OK();
         }
         else if (versionElement.eoo()) {
             return Status(ErrorCodes::NoSuchKey, mongoutils::str::stream() <<
                           "No " << AuthorizationManager::schemaVersionFieldName <<
                           " field in version document.");
         }
         else {
             return Status(ErrorCodes::TypeMismatch, mongoutils::str::stream() <<
                           "Bad (non-numeric) type " << versionElement.type() <<
                           "for " << AuthorizationManager::schemaVersionFieldName <<
                           " field in version document");
         }
     }
     else if (status == ErrorCodes::NoMatchingDocument) {
         if (hasAnyPrivilegeDocuments()) {
             *outVersion = AuthorizationManager::schemaVersion24;
         }
         else {
             *outVersion = AuthorizationManager::schemaVersion26Final;
         }
         return Status::OK();
     }
     else {
         return status;
     }
 }