reverse-operator functions have completely different behaviour for non-commutative operators when the rhs is not also a PartitionedSignal. the obvious one is shift: Signal << PartitionedSignal is not the same as: PartitionedSignal << Signal yet they both (obviously) return a PartitionedSignal. __rsub__ is also non-commutative and needs to behave very differently. there may be others, the full list to be evaluated and added here: * __rsub__