This would allow to abstract operations over the tree, like e.g. evaluation, validation, rendering, etc. See for example [`luqum`'s `TreeVisitor`](https://github.com/jurismarches/luqum/blob/64d3d4a1bcdc56f156185df1f4d146582f294998/luqum/visitor.py#L12).