variant A { | X | Y { x : int; } } class C { } variant B : C { | X | Y { x : int; } } variant D { | X | Y { x : int; } y : int; } variant E { | X | Y { x : int; } static mutable count : int; public this () { count++; } } assert (A.X () : object == A.X () : object); assert (A.Y (0) : object != A.Y (0) : object); assert (B.X () : object == B.X () : object); assert (B.Y (0) : object != B.Y (0) : object); assert (D.X () : object != D.X () : object); assert (D.Y (0) : object != D.Y (0) : object); assert (E.X () : object != E.X () : object); assert (E.Y (0) : object != E.Y (0) : object);