code: func (f *DeltaFIFO) Delete(obj interface{}) error {
  	id, err := f.KeyOf(obj)
  	if err != nil {
  		return KeyError{obj, err}
  	}
  	f.lock.Lock()
  	defer f.lock.Unlock()
  	f.populated = true
  	if f.knownObjects == nil {
  		if _, exists := f.items[id]; !exists {
  			// Presumably, this was deleted when a relist happened.
  			// Don't provide a second report of the same deletion.
  			return nil
  		}
  	} else {
  		// We only want to skip the "deletion" action if the object doesn't
  		// exist in knownObjects and it doesn't have corresponding item in items.
  		// Note that even if there is a "deletion" action in items, we can ignore it,
  		// because it will be deduped automatically in "queueActionLocked"
  		_, exists, err := f.knownObjects.GetByKey(id)
  		_, itemsExist := f.items[id]
  		if err == nil && !exists && !itemsExist {
  			// Presumably, this was deleted when a relist happened.
  			// Don't provide a second report of the same deletion.
  			return nil
  		}
  	}
  
  	return f.queueActionLocked(Deleted, obj)
  }
docs: // Delete is just like Add, but makes an Deleted Delta. If the item does not
  // already exist, it will be ignored. (It may have already been deleted by a
  // Replace (re-list), for example.