code: def match_iter(self, path_elements, start_at):
          
          if self.length == 1:
              return self._match_iter_single(path_elements, start_at)
          else:
              return self._match_iter_generic(path_elements, start_at)
docs: A generator that searches over *path_elements* (starting from the
          index *start_at*), yielding for each match.
  
          Each value yielded is the index into *path_elements* to the first element
          *after* each match. In other words, the returned index has already
          consumed the matching path elements of this :class:`Section`.
  
          Matches work by finding a contiguous group of path elements that
          match the list of :class:`Matcher` objects in this :class:`Section`
          as they are naturally paired.
  
          This method includes an implementation optimization that simplifies
          the search for :class:`Section` instances containing a single path
          element. This produces significant performance improvements.