Normally references are single-threaded, but they can be sent between threads
only by means of transfer mechanism. Transfer mechanism works like this:
For transferred reference, we construct graph of connected unpacked objects,
replacing their original content objects with special Transferred type, so they
cannot be accessed later in original thread. We send that graph and on the other
thread we reconstruct objects and references from that graph and return main one.