code: async def _overlap(items, overlap_attr, client=None, get_method=None):
      
      overlap = set.intersection(*(getattr(item, overlap_attr) for item in items))
      if client is None or get_method is None:
          return overlap
      results = []
      for item in overlap:
          result = await getattr(client, get_method)(id_=item.id_)
          results.append(result)
      return results
docs: Generic overlap implementation.
  
      Arguments:
        item (:py:class:`collections.abc.Sequence`): The objects to
          find overlaps for.
        overlap_attr (:py:class:`str`): The attribute of the items to use
          as input for the overlap.
        client (:py:class:`~.TMDbClient`, optional): The TMDb client
          to extract additional information about the overlap.
        get_method (:py:class:`str`, optional): The method of the
          client to use for extracting additional information.
  
      Returns:
        :py:class:`list`: The relevant result objects.