Sorry for derailing...
My implementation is to return input as output if self is not nil. That's not exchange:
I admit I was too circumstantial in a roundabout manner.
I just wanted to say we'd better to consider copy-ability to name the function.