code: func (f *FIFO) AddIfNotPresent(obj interface{}) error {
  	id, err := f.keyFunc(obj)
  	if err != nil {
  		return KeyError{obj, err}
  	}
  	f.lock.Lock()
  	defer f.lock.Unlock()
  	f.addIfNotPresent(id, obj)
  	return nil
  }
docs: // AddIfNotPresent inserts an item, and puts it in the queue. If the item is already
  // present in the set, it is neither enqueued nor added to the set.
  //
  // This is useful in a single producer/consumer scenario so that the consumer can
  // safely retry items without contending with the producer and potentially enqueueing
  // stale items.