code: def Scan(self, matcher):
      
  
      position = 0
      while True:
        span = matcher.Match(self.data, position)
        if span is None:
          return
  
        # We are not interested in hits within overlap-only zone. We continue the
        # search just after the previous match starts because of situations where
        # there is a match beginning before the end of the overlap-only zone match
        # and ending after the overlap zone.
        if span.end <= self.overlap:
          position = span.begin + 1
          continue
  
        # Since we do not care about overlapping matches we resume our search
        # at the end of the previous match.
        position = span.end
        yield span
docs: Yields spans occurrences of a given pattern within the chunk.
  
      Only matches that span over regular (non-overlapped) chunk bytes are
      returned. Matches lying completely within the overlapped zone are ought to
      be returned by the previous chunk.
  
      Args:
        matcher: A `Matcher` instance corresponding to the searched pattern.
  
      Yields:
        `Matcher.Span` object corresponding to the positions of the pattern.