I'm not convinced by the removal of ShallowClone.

I understand the reasoning, but it's difficult in C# to know that the thing that is being manipulated is actually a value type. Reading this code, I'd rather than that explicitly stated. Otherwise I will default to assuming that these lines are actually aliasing rather than cloning.