code: func Walk(v Visitor, x interface{}) {
  	wrapped, ok := v.(BeforeAndAfterVisitor)
  	if !ok {
  		wrapped = noopBeforeAndAfterVisitor{v}
  	}
  	WalkBeforeAndAfter(wrapped, x)
  }
docs: // Walk iterates the AST by calling the Visit function on the Visitor
  // v for x before recursing.