protected override void InternalBeginProcessing()
        {
            TaskLogger.LogEnter();
            if (base.Fields.IsModified(SyncMailContactSchema.CountryOrRegion) && (this.DataObject.IsModified(SyncMailContactSchema.C) || this.DataObject.IsModified(SyncMailContactSchema.Co) || this.DataObject.IsModified(SyncMailContactSchema.CountryCode)))
            {
                base.WriteError(new RecipientTaskException(Strings.ErrorConflictCountryOrRegion), ExchangeErrorCategory.Client, null);
            }
            if ((this.SmtpAndX500Addresses != null && this.SmtpAndX500Addresses.Count > 0) || (this.SipAddresses != null && this.SipAddresses.Count > 0))
            {
                this.DataObject.EmailAddresses = SyncTaskHelper.MergeAddresses(this.SmtpAndX500Addresses, this.SipAddresses);
            }
            base.InternalBeginProcessing();
            if (this.ValidationOrganization != null && !string.Equals(this.ValidationOrganization, base.CurrentOrganizationId.ToString(), StringComparison.OrdinalIgnoreCase))
            {
                base.ThrowTerminatingError(new ValidationOrgCurrentOrgNotMatchException(this.ValidationOrganization, base.CurrentOrganizationId.ToString()), ExchangeErrorCategory.Client, null);
            }
            if (base.Fields.IsModified("Manager"))
            {
                this.manager = MailboxTaskHelper.LookupManager(this.Manager, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADRecipient>), ExchangeErrorCategory.Client, base.TenantGlobalCatalogSession);
            }
            if (base.Fields.IsModified(ADRecipientSchema.GrantSendOnBehalfTo) && this.GrantSendOnBehalfTo != null && this.GrantSendOnBehalfTo.Length != 0)
            {
                this.grantSendOnBehalfTo = new MultiValuedProperty <ADRecipient>();
                foreach (RecipientIdParameter recipientIdParameter in this.GrantSendOnBehalfTo)
                {
                    ADRecipient item = (ADRecipient)base.GetDataObject <ADRecipient>(recipientIdParameter, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorRecipientNotFound(recipientIdParameter.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(recipientIdParameter.ToString())), ExchangeErrorCategory.Client);
                    this.grantSendOnBehalfTo.Add(item);
                }
            }
            if (!base.Fields.IsModified(ADRecipientSchema.BypassModerationFromSendersOrMembers))
            {
                if (base.Fields.IsModified(MailEnabledRecipientSchema.BypassModerationFrom) && this.BypassModerationFrom != null)
                {
                    MultiValuedProperty <ADObjectId> multiValuedProperty;
                    MultiValuedProperty <ADObjectId> multiValuedProperty2;
                    this.bypassModerationFromRecipient = SetMailEnabledRecipientObjectTask <MailContactIdParameter, SyncMailContact, ADContact> .ResolveAndSeparateMessageDeliveryRestrictionRecipientIdentities(this.BypassModerationFrom, "BypassModerationFrom", base.TenantGlobalCatalogSession, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADRecipient>), new Task.ErrorLoggerDelegate(base.WriteError), out multiValuedProperty, out multiValuedProperty2);

                    if (multiValuedProperty != null && multiValuedProperty.Count > 0)
                    {
                        base.ThrowTerminatingError(new RecipientTaskException(Strings.ErrorIndividualRecipientNeeded(multiValuedProperty[0].ToString())), ExchangeErrorCategory.Client, null);
                    }
                    this.bypassModerationFrom = multiValuedProperty2;
                }
                if (base.Fields.IsModified(MailEnabledRecipientSchema.BypassModerationFromDLMembers) && this.BypassModerationFromDLMembers != null)
                {
                    MultiValuedProperty <ADObjectId> multiValuedProperty3;
                    MultiValuedProperty <ADObjectId> multiValuedProperty4;
                    this.bypassModerationFromDLMembersRecipient = SetMailEnabledRecipientObjectTask <MailContactIdParameter, SyncMailContact, ADContact> .ResolveAndSeparateMessageDeliveryRestrictionRecipientIdentities(this.BypassModerationFromDLMembers, "BypassModerationFromDLMembers", base.TenantGlobalCatalogSession, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADRecipient>), new Task.ErrorLoggerDelegate(base.WriteError), out multiValuedProperty3, out multiValuedProperty4);

                    if (multiValuedProperty4 != null && multiValuedProperty4.Count > 0)
                    {
                        base.ThrowTerminatingError(new RecipientTaskException(Strings.ErrorGroupRecipientNeeded(multiValuedProperty4[0].ToString())), ExchangeErrorCategory.Client, null);
                    }
                    this.bypassModerationFromDLMembers = multiValuedProperty3;
                }
            }
            if (base.Fields.IsModified(ADRecipientSchema.AcceptMessagesOnlyFrom) && this.AcceptMessagesOnlyFrom != null && this.AcceptMessagesOnlyFrom.Length != 0)
            {
                this.acceptMessagesOnlyFrom = new MultiValuedProperty <ADRecipient>();
                foreach (DeliveryRecipientIdParameter deliveryRecipientIdParameter in this.AcceptMessagesOnlyFrom)
                {
                    ADRecipient item2 = (ADRecipient)base.GetDataObject <ADRecipient>(deliveryRecipientIdParameter, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorRecipientNotFound(deliveryRecipientIdParameter.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(deliveryRecipientIdParameter.ToString())), ExchangeErrorCategory.Client);
                    this.acceptMessagesOnlyFrom.Add(item2);
                }
            }
            if (base.Fields.IsModified(ADRecipientSchema.AcceptMessagesOnlyFromDLMembers) && this.AcceptMessagesOnlyFromDLMembers != null && this.AcceptMessagesOnlyFromDLMembers.Length != 0)
            {
                this.acceptMessagesOnlyFromDLMembers = new MultiValuedProperty <ADRecipient>();
                foreach (DeliveryRecipientIdParameter deliveryRecipientIdParameter2 in this.AcceptMessagesOnlyFromDLMembers)
                {
                    ADRecipient item3 = (ADRecipient)base.GetDataObject <ADRecipient>(deliveryRecipientIdParameter2, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorRecipientNotFound(deliveryRecipientIdParameter2.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(deliveryRecipientIdParameter2.ToString())), ExchangeErrorCategory.Client);
                    this.acceptMessagesOnlyFromDLMembers.Add(item3);
                }
            }
            if (base.Fields.IsModified(ADRecipientSchema.RejectMessagesFrom) && this.RejectMessagesFrom != null && this.RejectMessagesFrom.Length != 0)
            {
                this.rejectMessagesFrom = new MultiValuedProperty <ADRecipient>();
                foreach (DeliveryRecipientIdParameter deliveryRecipientIdParameter3 in this.RejectMessagesFrom)
                {
                    ADRecipient item4 = (ADRecipient)base.GetDataObject <ADRecipient>(deliveryRecipientIdParameter3, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorRecipientNotFound(deliveryRecipientIdParameter3.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(deliveryRecipientIdParameter3.ToString())), ExchangeErrorCategory.Client);
                    this.rejectMessagesFrom.Add(item4);
                }
            }
            if (base.Fields.IsModified(ADRecipientSchema.RejectMessagesFromDLMembers) && this.RejectMessagesFromDLMembers != null && this.RejectMessagesFromDLMembers.Length != 0)
            {
                this.rejectMessagesFromDLMembers = new MultiValuedProperty <ADRecipient>();
                foreach (DeliveryRecipientIdParameter deliveryRecipientIdParameter4 in this.RejectMessagesFromDLMembers)
                {
                    ADRecipient item5 = (ADRecipient)base.GetDataObject <ADRecipient>(deliveryRecipientIdParameter4, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorRecipientNotFound(deliveryRecipientIdParameter4.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(deliveryRecipientIdParameter4.ToString())), ExchangeErrorCategory.Client);
                    this.rejectMessagesFromDLMembers.Add(item5);
                }
            }
            TaskLogger.LogExit();
        }