def METHOD_NAME(self, roots: list[str] | None = None) -> Iterator[str]:
    """Walk the directory looking for files matching the pattern"""
    if roots is None:
        roots = []
    for root in roots:
        for dirpath, dirnames, filenames in os.METHOD_NAME(root):
            # Filters
            filenames[:] = [
                filename
                for filename in filenames
                if self.pattern_match(str(Path(dirpath) / filename), self.pattern)
                and not self.pattern_match(
                    str(Path(dirpath) / filename), self.file_exclude_pattern
                )
                and not self.pattern_match(
                    str(Path(dirpath) / filename), self.folder_exclude_pattern
                )
                and not (Path(dirpath) / filename).is_symlink()
            ]
            dirnames[:] = [
                dirname
                for dirname in dirnames
                if self.pattern_match(
                    str(Path(dirpath) / dirname), self.folder_include_pattern
                )
                and not self.pattern_match(
                    str(Path(dirpath) / dirname), self.folder_exclude_pattern
                )
            ]
            # Yields
            if self.yield_files:
                for filename in filenames:
                    yield str((Path(dirpath) / filename).resolve())
            if self.yield_folders:
                for dirname in dirnames:
                    yield str((Path(dirpath) / dirname).resolve())