def METHOD_NAME(self, prefix=''):
    if prefix:
        base = os.path.dirname(self._key_to_path(prefix))
    else:
        base = self.prefix
    for path, dirnames, filenames in os.walk(base, topdown=True):
        # Do not look in wrong directories
        if prefix:
            rpath = path[len(self.prefix) :]  # path relative to base
            prefix_l = ''.join(rpath.split('/'))
            dirs_to_walk = METHOD_NAME()
            for name in dirnames:
                prefix_ll = unescape(prefix_l + name)
                if prefix_ll.startswith(prefix[: len(prefix_ll)]):
                    dirs_to_walk.append(name)
            dirnames[:] = dirs_to_walk
        for name in filenames:
            # Skip temporary files
            if '#' in name:
                continue
            key = unescape(name)
            if not prefix or key.startswith(prefix):
                yield key