this works:
enum TreeNode<T> { Leaf(T), Branch(Vec<TreeNode<T>>), }
otherwise if it was just tuple of `TreeNode` there would be E0072 https://doc.rust-lang.org/stable/error_codes/E0072.html