for distinct objects assoc1 and assoc2 of type Assoc,
after evaluating assoc1 = std::move(assoc2),
the association owned by assoc1, if any, is released and
assoc2 is not engaged;
for an object assoc of type Assoc that is engaged,
assoc.try_associate() either
returns an object that is not engaged or
acquires a new association with assoc's associated scope and
returns an engaged object that owns that association;
for an object token of type Token,
token.try_associate() either
returns an object that is not engaged or
acquires a new association with token's associated scope and
returns an engaged object that owns that association; and
completion_signatures_of_t<decltype(token.wrap(sndr)), E>
contains the same completion signatures as
completion_signatures_of_t<decltype((sndr)), E>
for all types E such that
sender_in<decltype((sndr)), E> is modeled.