public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) { return(true); } var proxyGenerationOptions = obj as ProxyGenerationOptions; if (ReferenceEquals(proxyGenerationOptions, null)) { return(false); } // ensure initialization before accessing MixinData Initialize(); proxyGenerationOptions.Initialize(); if (!Equals(Hook, proxyGenerationOptions.Hook)) { return(false); } if (!Equals(Selector == null, proxyGenerationOptions.Selector == null)) { return(false); } if (!Equals(MixinData, proxyGenerationOptions.MixinData)) { return(false); } return(BaseTypeForInterfaceProxy == proxyGenerationOptions.BaseTypeForInterfaceProxy && CollectionExtensions.AreEquivalent(AdditionalAttributes, proxyGenerationOptions.AdditionalAttributes)); }