code: func removeNodeIDFromNode(csiDriverName string) nodeUpdateFunc {
  	return func(node *v1.Node) (*v1.Node, bool, error) {
  		var previousAnnotationValue string
  		if node.ObjectMeta.Annotations != nil {
  			previousAnnotationValue =
  				node.ObjectMeta.Annotations[annotationKeyNodeID]
  		}
  
  		if previousAnnotationValue == "" {
  			return node, false, nil
  		}
  
  		// Parse previousAnnotationValue as JSON
  		existingDriverMap := map[string]string{}
  		if err := json.Unmarshal([]byte(previousAnnotationValue), &existingDriverMap); err != nil {
  			return nil, false, fmt.Errorf(
  				"failed to parse node's %q annotation value (%q) err=%v",
  				annotationKeyNodeID,
  				previousAnnotationValue,
  				err)
  		}
  
  		if _, ok := existingDriverMap[csiDriverName]; !ok {
  			// Value is already missing in node annotation, nothing more to do
  			return node, false, nil
  		}
  
  		// Delete annotation value
  		delete(existingDriverMap, csiDriverName)
  		if len(existingDriverMap) == 0 {
  			delete(node.ObjectMeta.Annotations, annotationKeyNodeID)
  		} else {
  			jsonObj, err := json.Marshal(existingDriverMap)
  			if err != nil {
  				return nil, false, fmt.Errorf(
  					"failed while trying to remove key %q from node %q annotation. Existing data: %v",
  					csiDriverName,
  					annotationKeyNodeID,
  					previousAnnotationValue)
  			}
  
  			node.ObjectMeta.Annotations[annotationKeyNodeID] = string(jsonObj)
  		}
  
  		return node, true, nil
  	}
  }
docs: // removeNodeIDFromNode returns a function that removes node ID information matching the given
  // driver name from a Node object.