TreeNode handles arbitrary children and blocks