docs: def get_repository(self, repository_id):
          """Gets the ``Repository`` specified by its ``Id``.
  
          In plenary mode, the exact ``Id`` is found or a ``NotFound``
          results. Otherwise, the returned ``Repository`` may have a
          different ``Id`` than requested, such as the case where a
          duplicate ``Id`` was assigned to a ``Repository`` and retained
          for compatibility.
  
          arg:    repository_id (osid.id.Id): ``Id`` of the ``Repository``
          return: (osid.repository.Repository) - the repository
          raise:  NotFound - ``repository_id`` not found
          raise:  NullArgument - ``repository_id`` is ``null``
          raise:  OperationFailed - unable to complete request
          raise:  PermissionDenied - authorization failure
          *compliance: mandatory -- This method is must be implemented.*
  
          """
          # Implemented from template for
          # osid.resource.BinLookupSession.get_bin
          if self._catalog_session is not None:
              return self._catalog_session.get_catalog(catalog_id=repository_id)
          collection = JSONClientValidated('repository',
                                           collection='Repository',
                                           runtime=self._runtime)
          # Need to consider how to best deal with the "phantom root" catalog issue
          if repository_id.get_identifier() == PHANTOM_ROOT_IDENTIFIER:
              return self._get_phantom_root_catalog(cat_class=objects.Repository, cat_name='Repository')
          try:
              result = collection.find_one({'_id': ObjectId(self._get_id(repository_id, 'repository').get_identifier())})
          except errors.NotFound:
              # Try creating an orchestrated Repository.  Let it raise errors.NotFound()
              result = self._create_orchestrated_cat(repository_id, 'repository', 'Repository')
  
          return objects.Repository(osid_object_map=result, runtime=self._runtime, proxy=self._proxy)