When a proxy has been loaded and is cloned before being initialized, it will behave unexpectedly.
_load() in the proxy starts a chain of method calls that end up loading the data and putting it into the proxy being in the identity map inside UoW. Now the registered proxy will be updated, but the cloned copy will of course not be changed - except it will behave as if it was initialized. This leads (at least in my case) to changes not being picked up after merge() has been called.
In my case I could work around this if I could ask the proxy to initialize itself (
DDC-733). More transparent would be a __clone() method in the proxy that initializes the proxy. This might also be related to DDC-18.