So, on the surface I don't think the IE Node cloning failure is a reason to back off from this change (and the performance benefits it provides). That is, the above change seems logically sound. 

The whole issue with IE and Node cloning was that while iterating the "Base" based object, the first Node reference  it encountered would be a bad clone. After that, we just didn't clone (assuming the object was already cloned) and so you'd get a good instance back. The workaround we put in was to make sure the first Node instance encountered was a transient instance [the instance on the event facade] and not the one stored in State. The refactor just seems to have impacted the first reference to the Node value which clone hits, while cloning.

I think the right thing to do is just fix Y.clone(nodeInstance) for IE. Since the clone we return is broken anyway, worst case we just don't bother cloning nodes in IE.

I want to step through the code to verify this so I can sleep at night, before we close this issue out. I'll do that tomorrow in the office, with a real IE10 instance. It's too painful on the VMs