If a tree must have a child and that child can't be anything other than a tree, then that causes every child to need a child of its own. A leaf node doesn't have any children and you can't have an infinite tree, so this type wouldn't work in real code.
This is minor but I'm reporting it to make my PR reference an issue.
The Tree type defines a node of a tree which must have two Tree chidren. This makes it impossible for there to be leaf nodes.
If a tree must have a child and that child can't be anything other than a tree, then that causes every child to need a child of its own. A leaf node doesn't have any children and you can't have an infinite tree, so this type wouldn't work in real code.