code: func (o *UndoOptions) RunUndo() error {
  	r := o.Builder().
  		WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...).
  		NamespaceParam(o.Namespace).DefaultNamespace().
  		FilenameParam(o.EnforceNamespace, &o.FilenameOptions).
  		ResourceTypeOrNameArgs(true, o.Resources...).
  		ContinueOnError().
  		Latest().
  		Flatten().
  		Do()
  	if err := r.Err(); err != nil {
  		return err
  	}
  
  	err := r.Visit(func(info *resource.Info, err error) error {
  		if err != nil {
  			return err
  		}
  		rollbacker, err := polymorphichelpers.RollbackerFn(o.RESTClientGetter, info.ResourceMapping())
  		if err != nil {
  			return err
  		}
  
  		result, err := rollbacker.Rollback(info.Object, nil, o.ToRevision, o.DryRun)
  		if err != nil {
  			return err
  		}
  
  		printer, err := o.ToPrinter(result)
  		if err != nil {
  			return err
  		}
  
  		return printer.PrintObj(info.Object, o.Out)
  	})
  
  	return err
  }
docs: // RunUndo performs the execution of 'rollout undo' sub command