pub fn map_ast<'a, T, S>( ast: &'a T, get_args: impl Fn(&T) -> &[T], map_node: impl FnMut(&T, Vec<S>) -> Result<S, Error>, ) -> Result<S, Error>