code: func (t *Treap) Upsert(item Item, itemPriority int) *Treap {
  	r := t.union(t.root, &node{item: item, priority: itemPriority})
  	return &Treap{compare: t.compare, root: r}
  }
docs: // Note: only the priority of the first insert of an item is used.
  // Priorities from future updates on already existing items are
  // ignored.  To change the priority for an item, you need to do a
  // Delete then an Upsert.