Entry point for AST recursion.

def recurse(node, *args, **kwargs):
    """Entry point for AST recursion."""
    # Construct a default table of actions, using action from kwargs
    # if it is available. These are forwarded to _recurse.
    fwd = dict()
    for node_info in _NODE_INFO_TABLE.values():
        fwd[node_info.handler] = kwargs.get(node_info.handler, None)

    fwd["depth"] = 0
    _recurse(node, *args, **fwd)