def METHOD_NAME(self, attr, prev_attr):
    """early up-front ``doit`` work"""
    def _gather():
        for name, addon in self._addons.items():
            if attr in addon.__all__:
                try:
                    for task in getattr(addon, attr)(self):
                        patched_task = {**task}
                        patched_task[
                            "name"
                        ] = f"""{self.task_prefix}{name}:{task["name"]}"""
                        print(patched_task["name"])
                        yield patched_task
                except Exception as error:
                    self.log.error(f"[lite] [{attr}] [{name}] [ERR] {error}")
                    if self.strict:
                        raise error
    if not prev_attr:
        return _gather
    @doit.create_after(f"{self.task_prefix}{prev_attr}")
    def _delayed_gather():
        for task in _gather():
            yield task
    return _delayed_gather