<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def overlay(self, matchers, force=False):
 """ 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 """


        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)