Ensure that this works:

```python
@setup
def mytask():
    print("I am a setup task")

with dag_maker() as dag:
    mytask.override(task_id='newtask')

assert len(dag.task_group.children) == 1
setup_task = dag.task_group.children["newtask"]
assert setup_task._is_setup
```
and teardown also works
"""Return mapped task groups in the hierarchy.
        Groups are returned from the closest to the outmost. If *self* is a
        mapped task group, it is returned first.
        :meta private:
        """
        group: TaskGroup | None = self
        while group is not None:
            if isinstance(group, MappedTaskGroup):
                yield group
            group = group.task_group
    def iter_tasks(self) -> Iterator[AbstractOperator]:
        """Returns an iterator of the child tasks."""
        from airflow.models.abstractoperator import AbstractOperator
        groups_to_visit = [self]
        while groups_to_visit:
            visiting = groups_to_visit.pop(0)
            for child in visiting.children.values():
                if isinstance(child, AbstractOperator):
                    yield child
                elif isinstance(child, TaskGroup):
                    groups_to_visit.append(child)
                else:
                    raise ValueError(
                        f"Encountered a DAGNode that is not a TaskGroup or an AbstractOperator: {type(child)}"
                    )
class MappedTaskGroup(TaskGroup):