List<TreeNode> get leaves { var leaves = <TreeNode>[]; for (var child in children!) { if (child.children == null) { leaves.add(child); } else { leaves.addAll([child, ...child.leaves]); } } return leaves; }