code: func (o TaintOptions) Validate() error {
  	resourceType := strings.ToLower(o.resources[0])
  	validResources, isValidResource := []string{"node", "nodes"}, false
  	for _, validResource := range validResources {
  		if resourceType == validResource {
  			isValidResource = true
  			break
  		}
  	}
  	if !isValidResource {
  		return fmt.Errorf("invalid resource type %s, only %q are supported", o.resources[0], validResources)
  	}
  
  	// check the format of taint args and checks removed taints aren't in the new taints list
  	var conflictTaints []string
  	for _, taintAdd := range o.taintsToAdd {
  		for _, taintRemove := range o.taintsToRemove {
  			if taintAdd.Key != taintRemove.Key {
  				continue
  			}
  			if len(taintRemove.Effect) == 0 || taintAdd.Effect == taintRemove.Effect {
  				conflictTaint := fmt.Sprintf("{\"%s\":\"%s\"}", taintRemove.Key, taintRemove.Effect)
  				conflictTaints = append(conflictTaints, conflictTaint)
  			}
  		}
  	}
  	if len(conflictTaints) > 0 {
  		return fmt.Errorf("can not both modify and remove the following taint(s) in the same command: %s", strings.Join(conflictTaints, ", "))
  	}
  	return o.validateFlags()
  }
docs: // Validate checks to the TaintOptions to see if there is sufficient information run the command.