If a term is currently stored under Key and unifies
with OldTerm, the term is replaced by a copy of
bb_update/3 silently fails. This
predicate provides an atomic swap operation.
Any uninstantiated variables in the NewTerm will be replaced by new private variables, along with copies of any subgoals blocked on these variables (see ref-sem-sec).