code: func markAsDeleting(obj runtime.Object, now time.Time) (err error) {
  	objectMeta, kerr := meta.Accessor(obj)
  	if kerr != nil {
  		return kerr
  	}
  	// This handles Generation bump for resources that don't support graceful
  	// deletion. For resources that support graceful deletion is handle in
  	// pkg/api/rest/delete.go
  	if objectMeta.GetDeletionTimestamp() == nil && objectMeta.GetGeneration() > 0 {
  		objectMeta.SetGeneration(objectMeta.GetGeneration() + 1)
  	}
  	existingDeletionTimestamp := objectMeta.GetDeletionTimestamp()
  	if existingDeletionTimestamp == nil || existingDeletionTimestamp.After(now) {
  		metaNow := metav1.NewTime(now)
  		objectMeta.SetDeletionTimestamp(&metaNow)
  	}
  	var zero int64 = 0
  	objectMeta.SetDeletionGracePeriodSeconds(&zero)
  	return nil
  }
docs: // markAsDeleting sets the obj's DeletionGracePeriodSeconds to 0, and sets the
  // DeletionTimestamp to "now" if there is no existing deletionTimestamp or if the existing
  // deletionTimestamp is further in future. Finalizers are watching for such updates and will
  // finalize the object if their IDs are present in the object's Finalizers list.