code: func (t *Collection) Delete(key []byte) (wasDeleted bool, err error) {
  	if t.store.readOnly {
  		return false, errors.New("store is read only")
  	}
  	rnl := t.rootAddRef()
  	defer t.rootDecRef(rnl)
  	root := rnl.root
  	i, err := t.GetItem(key, false)
  	if err != nil || i == nil {
  		return false, err
  	}
  	t.store.ItemDecRef(t, i)
  	left, middle, right, err := t.store.split(t, root, key, &rnl.reclaimMark)
  	if err != nil {
  		return false, err
  	}
  	defer t.freeNodeLoc(left)
  	defer t.freeNodeLoc(right)
  	defer t.freeNodeLoc(middle)
  	if middle.isEmpty() {
  		return false, fmt.Errorf("concurrent delete, key: %v", key)
  	}
  	r, err := t.store.join(t, left, right, &rnl.reclaimMark)
  	if err != nil {
  		return false, err
  	}
  	rnlNew := t.mkRootNodeLoc(r)
  	// Can't reclaim immediately due to readers.
  	rnlNew.reclaimLater[0] = t.reclaimMarkUpdate(left,
  		&rnl.reclaimMark, &rnlNew.reclaimMark)
  	rnlNew.reclaimLater[1] = t.reclaimMarkUpdate(right,
  		&rnl.reclaimMark, &rnlNew.reclaimMark)
  	rnlNew.reclaimLater[2] = t.reclaimMarkUpdate(middle,
  		&rnl.reclaimMark, &rnlNew.reclaimMark)
  	t.markReclaimable(rnlNew.reclaimLater[2], &rnlNew.reclaimMark)
  	if !t.rootCAS(rnl, rnlNew) {
  		return false, errors.New("concurrent mutation attempted")
  	}
  	t.rootDecRef(rnl)
  	return true, nil
  }
docs: // Deletes an item of a given key.