code: func (v ContinueOnErrorVisitor) Visit(fn VisitorFunc) error {
  	errs := []error{}
  	err := v.Visitor.Visit(func(info *Info, err error) error {
  		if err != nil {
  			errs = append(errs, err)
  			return nil
  		}
  		if err := fn(info, nil); err != nil {
  			errs = append(errs, err)
  		}
  		return nil
  	})
  	if err != nil {
  		errs = append(errs, err)
  	}
  	if len(errs) == 1 {
  		return errs[0]
  	}
  	return utilerrors.NewAggregate(errs)
  }
docs: // Visit returns nil if no error occurs during traversal, a regular
  // error if one occurs, or if multiple errors occur, an aggregate
  // error.  If the provided visitor fails on any individual item it
  // will not prevent the remaining items from being visited. An error
  // returned by the visitor directly may still result in some items
  // not being visited.