code: func (h *Heap) AddIfNotPresent(obj interface{}) error {
  	id, err := h.data.keyFunc(obj)
  	if err != nil {
  		return KeyError{obj, err}
  	}
  	h.lock.Lock()
  	defer h.lock.Unlock()
  	if h.closed {
  		return fmt.Errorf(closedMsg)
  	}
  	h.addIfNotPresentLocked(id, obj)
  	h.cond.Broadcast()
  	return nil
  }
docs: // AddIfNotPresent inserts an item, and puts it in the queue. If an item with
  // the key is present in the map, no changes is made to the item.
  //
  // 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.