I think as long as there's a test case for something like ``` @dataclass class Node: global_node: ClassVar[Node | None] left: InitVar[Node | None] right: InitVar[None | None] ``` the bug https://bugs.python.org/issue33453 and the current implementation https://github.com/python/cpython/blob/bfc2d5a5c4550ab3a2fadeb9459b4bd948ff61a2/Lib/dataclasses.py#L658-L714 shows this is a tricky problem
The most straightforward workaround for this is to skip the decorator syntax. With PEP 649 active, this code should work:
class Node: global_node: ClassVar[Node | None] left: InitVar[Node | None] right: InitVar[None | None] Node = dataclass(Node)
/arry