code: def collect_related(self, finder_funcs, obj, count, *args, **kwargs):
          
          collected = []
          for func in finder_funcs:
              gathered = func(obj, count, collected, *args, **kwargs)
              if gathered:
                  collected += gathered
              if len(collected) >= count:
                  return collected[:count]
  
          return collected
docs: Collects objects related to ``obj`` using a list of ``finder_funcs``.
          Stops when required count is collected or the function list is
          exhausted.