code: func PatchNodeTaints(c clientset.Interface, nodeName string, oldNode *v1.Node, newNode *v1.Node) error {
  	oldData, err := json.Marshal(oldNode)
  	if err != nil {
  		return fmt.Errorf("failed to marshal old node %#v for node %q: %v", oldNode, nodeName, err)
  	}
  
  	newTaints := newNode.Spec.Taints
  	newNodeClone := oldNode.DeepCopy()
  	newNodeClone.Spec.Taints = newTaints
  	newData, err := json.Marshal(newNodeClone)
  	if err != nil {
  		return fmt.Errorf("failed to marshal new node %#v for node %q: %v", newNodeClone, nodeName, err)
  	}
  
  	patchBytes, err := strategicpatch.CreateTwoWayMergePatch(oldData, newData, v1.Node{})
  	if err != nil {
  		return fmt.Errorf("failed to create patch for node %q: %v", nodeName, err)
  	}
  
  	_, err = c.CoreV1().Nodes().Patch(nodeName, types.StrategicMergePatchType, patchBytes)
  	return err
  }
docs: // PatchNodeTaints patches node's taints.