docs: def find_all(s, sub, start=0, end=0, limit=-1, reverse=False):
      """
      Find all indexes of sub in s.
  
      :param s: the string to search
      :param sub: the string to search for
      :param start: the index in s at which to begin the search (same as in ''.find)
      :param end: the index in s at which to stop searching (same as in ''.find)
      :param limit: the maximum number of matches to find
      :param reverse: if False search s forwards; otherwise search backwards
  
      :return: all occurrences of substring sub in string s
      """
  
      indexes = []
  
      if not bool(s and sub):
          return indexes
  
      lstr = len(s)
      if lstr <= start:
          return indexes
  
      lsub = len(sub)
      if lstr < lsub:
          return indexes
  
      if limit == 0:
          return indexes
      elif limit < 0:
          limit = lstr
  
      end = min(end, lstr) or lstr
      idx = s.rfind(sub, start, end) if reverse else s.find(sub, start, end)
  
      while idx != -1:
          indexes.append(idx)
          if reverse:
              idx = s.rfind(sub, start, idx - lstr)
          else:
              idx = s.find(sub, idx + lsub, end)
  
          if len(indexes) >= limit:
              break
  
      return indexes