code: func NewDecoratedVisitor(v Visitor, fn ...VisitorFunc) Visitor {
  	if len(fn) == 0 {
  		return v
  	}
  	return DecoratedVisitor{v, fn}
  }
docs: // NewDecoratedVisitor will create a visitor that invokes the provided visitor functions before
  // the user supplied visitor function is invoked, giving them the opportunity to mutate the Info
  // object or terminate early with an error.