docs: def items(self, folder_id, subfolder_id, ann_id=None):
          '''Yields an unodered generator of items in a subfolder.
  
          The generator yields items, which are represented by a tuple
          of ``content_id`` and ``subtopic_id``. The format of these
          identifiers is unspecified.
  
          By default (with ``ann_id=None``), subfolders are shown for all
          anonymous users. Optionally, ``ann_id`` can be set to a username,
          which restricts the list to only subfolders owned by that user.
  
          :param str folder_id: Folder id
          :param str subfolder_id: Subfolder id
          :param str ann_id: Username
          :rtype: generator of ``(content_id, subtopic_id)``
          '''
          self.assert_valid_folder_id(folder_id)
          self.assert_valid_folder_id(subfolder_id)
          ann_id = self._annotator(ann_id)
          folder_cid = self.wrap_folder_content_id(ann_id, folder_id)
          subfolder_sid = self.wrap_subfolder_subtopic_id(subfolder_id)
          ident = (folder_cid, subfolder_sid)
  
          if self.store.get(folder_cid) is None:
              raise KeyError(folder_id)
          for lab in self.label_store.directly_connected(ident):
              cid = lab.other(folder_cid)
              subid = lab.subtopic_for(cid)
              yield (cid, subid)