docs: def match(self, files):
          """Given a set of files in this directory, returns all the files that
          match the :class:`Pattern` instances which match this directory."""
          if not files:
              return set()
  
          if (self.matched_inherit.all_files()
                  or self.matched_and_subdir.all_files()
                  or self.matched_no_subdir.all_files()):
              # Optimization: one of the matched patterns matches everything
              # So simply return it
              return set(files)
  
          unmatched = set(files)
          matched = set()
          for pattern_set in self._matching_pattern_sets():
              pattern_set.match_files(matched, unmatched)
              if not unmatched:
                  # Optimization: If we have matched all files already
                  # simply return at this point - nothing else to do
                  break
  
          return matched