code: func (e *Store) finalizeDelete(ctx context.Context, obj runtime.Object, runHooks bool) (runtime.Object, error) {
  	if runHooks && e.AfterDelete != nil {
  		if err := e.AfterDelete(obj); err != nil {
  			return nil, err
  		}
  	}
  	if e.ReturnDeletedObject {
  		if e.Decorator != nil {
  			if err := e.Decorator(obj); err != nil {
  				return nil, err
  			}
  		}
  		return obj, nil
  	}
  	// Return information about the deleted object, which enables clients to
  	// verify that the object was actually deleted and not waiting for finalizers.
  	accessor, err := meta.Accessor(obj)
  	if err != nil {
  		return nil, err
  	}
  	qualifiedResource := e.qualifiedResourceFromContext(ctx)
  	details := &metav1.StatusDetails{
  		Name:  accessor.GetName(),
  		Group: qualifiedResource.Group,
  		Kind:  qualifiedResource.Resource, // Yes we set Kind field to resource.
  		UID:   accessor.GetUID(),
  	}
  	status := &metav1.Status{Status: metav1.StatusSuccess, Details: details}
  	return status, nil
  }
docs: // finalizeDelete runs the Store's AfterDelete hook if runHooks is set and
  // returns the decorated deleted object if appropriate.