This is verly likely wrong: not all PMCs have to implement assign:
<Dan>: That's why the destination controls assignment.
Additionaly we can't assign to singletons or r/o PMCs.
So the right thing for the logical functions seems to be, to just return the left or right side according to their boolean value (or return a new Boolean false in case of xor), i.e. you get a reference to one of the PMCs usually.
This would break a few tests, which don't cope with these ref semantics.
Comments welcome, leo