public bool CompareAddresses(object messageValue, object ruleValue)
        {
            ProxyAddress proxyAddressFromSearchKey  = RuleUtil.GetProxyAddressFromSearchKey(messageValue);
            ProxyAddress proxyAddressFromSearchKey2 = RuleUtil.GetProxyAddressFromSearchKey(ruleValue);

            if (proxyAddressFromSearchKey2 == null || proxyAddressFromSearchKey2 is InvalidProxyAddress || string.IsNullOrEmpty(proxyAddressFromSearchKey2.ValueString))
            {
                string recipient = ServerStrings.Null;
                if (proxyAddressFromSearchKey2 != null)
                {
                    recipient = proxyAddressFromSearchKey2.ToString();
                }
                this.DisableAndMarkRuleInError(this.CurrentRule, RuleAction.Type.OP_INVALID, 0, DeferredError.RuleError.Parsing);
                this.RecordError(ServerStrings.FolderRuleErrorInvalidRecipient(recipient));
                return(false);
            }
            this.TraceDebug <ProxyAddress, ProxyAddress>("Comparing recipients, message address {0}, rule address {1}", proxyAddressFromSearchKey, proxyAddressFromSearchKey2);
            RuleUtil.FaultInjection((FaultInjectionLid)4257530192U);
            return(RuleUtil.IsSameUser(this, this.RecipientCache, proxyAddressFromSearchKey, proxyAddressFromSearchKey2));
        }