Did you know ... Search Documentation:
Predicate pwp_unite/3
 pwp_unite(+Bindings, +Context0, -Context:list(atom=any))[private]
merges the new Bindings with the bindings in the outer Context0, constructing a new list of VariableName=CurrentValue bindings in Context1. This is only used when the CurrentValue parts of the new Bindings are known to be distinct new variables, so the Bindings cannot possibly conflict with any existing binding in Context0. This is O(|Bindings|.|Context0|), which is not that efficient, but since we do not expect there to be very many variables it doesn't matter much.