docs: def _build_cache(self):
          """ Build a list of objects from feed's cached items or API page"""
          self.cache = []
          if self.done:
              return
  
          for i in (self.get_cached() if self._cached else self.get_page(self.url)):
              if not self._cached:
                  # some objects don't have objectType set (inbox activities)
                  if not i.get("objectType"):
                      i["objectType"] = self.feed.object_types[0]
                  obj = Mapper(pypump=self.feed._pump).get_object(i)
  
              else:
                  obj = i
              self.cache.append(obj)
  
          # ran out of items
          if len(self.cache) <= 0:
              self._done = True
  
          # check what to do next time
          if getattr(self.feed, 'issue65', False):
              # work around API bug for favorites feed, see https://github.com/xray7224/PyPump/issues/65
              if self._offset is None:
                  self._offset = 0
              self._offset += 20
          elif self._since is not None:
              if self.feed.links.get('prev'):
                  self.url = self.feed.links['prev']
                  del self.feed.links['prev']  # avoid using it again
          else:
              if self.feed.links.get('next'):
                  self.url = self.feed.links['next']
                  del self.feed.links['next']  # avoid using it again
              else:
                  self.url = None