bb_update(:Key, -OldTerm, +NewTerm)
If a term is currently stored under Key and unifies with
OldTerm, then the term is replaced by a copy of NewTerm.
bb_update/3 silently fails. This predicate provides
an atomic swap operation.
Any uninstantiated variables in the Term will be replaced by brand new, unattributed variables (see ref-sem-sec).
Key is not instantiated
Key is not an atom or a small integer.