code: def resolve(self, pid_value):
          
          pid = PersistentIdentifier.get(self.pid_type, pid_value)
  
          if pid.is_new() or pid.is_reserved():
              raise PIDUnregistered(pid)
  
          if pid.is_deleted():
              obj_id = pid.get_assigned_object(object_type=self.object_type)
              try:
                  obj = self.object_getter(obj_id) if obj_id else None
              except NoResultFound:
                  obj = None
              raise PIDDeletedError(pid, obj)
  
          if pid.is_redirected():
              raise PIDRedirectedError(pid, pid.get_redirect())
  
          obj_id = pid.get_assigned_object(object_type=self.object_type)
          if not obj_id:
              raise PIDMissingObjectError(self.pid_type, pid_value)
  
          return pid, self.object_getter(obj_id)
docs: Resolve a persistent identifier to an internal object.
  
          :param pid_value: Persistent identifier.
          :returns: A tuple containing (pid, object).