https://bugs.winehq.org/show_bug.cgi?id=50849
--- Comment #7 from Esme Povirk madewokherd@gmail.com --- It turns out that both -- and Equals use reference equality, and there's only supposed to be one Type object for a given type. The code in Variant.SetValue appears to be correct, but something strange is happening in the runtime.