TreeNode.traverse() stops when callback returns False