def _receive(self, root, directory, dirs, files, include, exclude):
        """Internal function processing each yield from os.walk."""

        self._received += 1

        if not self.symlinks:
            where = root + os.path.sep + directory + os.path.sep
            files = [
                file_name for file_name in files
                if not os.path.islink(where + file_name)
            ]

        include = FileSetState("Include", directory, include, None
                               if include else self.include)
        exclude = FileSetState("Exclude", directory, exclude, None
                               if exclude else self.exclude)

        if exclude.matches_all_files_all_subdirs():
            # Exclude everything and do no traverse any subdirectories
            del dirs[0:]
            matched = set()
        else:
            if include.no_possible_matches_in_subdirs():
                # Do no traverse any subdirectories
                del dirs[0:]
            matched = include.match(set(files))
            matched -= exclude.match(matched)

        return matched, include, exclude