### Apache Airflow version

2.2.2 (latest released)

### Operating System

MacOS 11.6.1

### Versions of Apache Airflow Providers

$ pip freeze | grep airflow
apache-airflow==2.2.2
apache-airflow-providers-celery==2.1.0
apache-airflow-providers-ftp==2.0.1
apache-airflow-providers-http==2.0.1
apache-airflow-providers-imap==2.0.1
apache-airflow-providers-sqlite==2.0.1

### Deployment

Other

### Deployment details

`airflow standalone`

### What happened

```
AttributeError: 'NoneType' object has no attribute 'update_relative'
```

### What you expected to happen

Task group should be set as downstream of `start` task, and upstream of `end` task

### How to reproduce

* Add the following code to dags folder

```python
from datetime import datetime

from airflow.decorators import dag, task, task_group


@dag(start_date=datetime(2023, 1, 1), schedule_interval="@once")
def test_dag_1():
    @task
    def start():
        pass

    @task
    def do_thing(x):
        print(x)

    @task_group
    def do_all_things():
        do_thing(1)
        do_thing(2)

    @task
    def end():
        pass

    start() >> do_all_things() >> end()


test_dag_1()
```

* Run `airflow standalone`

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/decorators/task_group.py
if 'self' in signature(f).parameters:
            raise TypeError('@task_group does not support methods')
    @kwargs.validator
    def _validate(self, _, kwargs):
        task_group_sig.bind_partial(**kwargs)
    def __attrs_post_init__(self):
        self.kwargs.setdefault('group_id', self.function.__name__)
    def _make_task_group(self, **kwargs) -> TaskGroup:
        return TaskGroup(**kwargs)
    def __call__(self, *args, **kwargs) -> R:
        with self._make_task_group(add_suffix_on_collision=True, **self.kwargs):
            
            return self.function(*args, **kwargs)
    def partial(self, **kwargs) -> "MappedTaskGroupDecorator[R]":
        return MappedTaskGroupDecorator(function=self.function, kwargs=self.kwargs).partial(**kwargs)
    def map(self, **kwargs) -> R:
        return MappedTaskGroupDecorator(function=self.function, kwargs=self.kwargs).map(**kwargs)
@attr.define
class MappedTaskGroupDecorator(TaskGroupDecorator[R]):
    """:meta private:"""
    partial_kwargs: Dict[str, Any] = attr.ib(factory=dict)
    """static kwargs for the decorated function"""
    mapped_kwargs: Dict[str, Any] = attr.ib(factory=dict)
    """kwargs for the decorated function"""
    def __call__(self, *args, **kwargs):