docs: def add(self, entities):
          """
          Adds the given entities to the cache, if they weren't saved before.
          """
          if not utils.is_list_like(entities):
              # Invariant: all "chats" and "users" are always iterables,
              # and "user" never is (so we wrap it inside a list).
              entities = itertools.chain(
                  getattr(entities, 'chats', []),
                  getattr(entities, 'users', []),
                  (hasattr(entities, 'user') and [entities.user]) or []
              )
  
          for entity in entities:
              try:
                  pid = utils.get_peer_id(entity)
                  if pid not in self.__dict__:
                      # Note: `get_input_peer` already checks for `access_hash`
                      self.__dict__[pid] = utils.get_input_peer(entity)
              except TypeError:
                  pass