Visitor api provide a way to traverse the node tree and modify its
components. The api allows modification of all types of nodes, and some
atoms like InvalidBlock or NodeName.
Visitor entrypoint.
Visit nodes in array calling visitor methods.
Recursively visit nodes in children, and attributes.
Provide custom handler that is used to visit custom nodes.
Custom handler should return true if visitor should continue to traverse,
and call visitor methods for its children.