Consider the Foo struct as follows:
struct Foo { public float X; public float Y; public Foo(float x, float y) { this.X = x; this.Y = y; }
Found my answer at the very bottom of: http://www.albahari.com/valuevsreftypes.aspx
However, I still don't understand why the compiler allows mutable structs in that case.