parser/ast.go
func (ast *AST) Visit() <-chan node.Node {
	c := make(chan node.Node)
	go func() {
		defer close(c)
		ast.Root.Visit(c)
	}()
	return c
}
func (ast *AST) Visit() <-chan node.Node {
	c := make(chan node.Node)
	go func() {
		defer close(c)
		ast.Root.Visit(c)
	}()
	return c
}
// Visit returns a channel which you can receive Node structs in order that
// that they would be processed