Apparently I was wrong.

It did return an object to me instead of creating a new one.

I just found out that it's actually changing the destination object
to point to the source object.

If the source object is out of my process, can I refer it?
Or is there a workaround for this?