Add visitDescendants function
Remove `children`, refactor in terms of `visitDescendants`