code: def overlay(self, matchers, force=False):
          
  
          for m in matchers:
              if m in self._ran_matchers:
                  continue
  
              self._ran_matchers.append(m)
              self.overlays += list(m.offset_overlays(self))
  
          self.overlays.sort(key=lambda o: o.start, reverse=True)
docs: Given a list of matchers create overlays based on them. Normally I
          will remember what overlays were run this way and will avoid
          re-running them but you can `force` me to. This is the
          recommended way of running overlays.c