// Token: 0x06000E48 RID: 3656 RVA: 0x00055A2C File Offset: 0x00053C2C
        protected override void InvokeInternal(InvokeArgs invokeArgs, List <KeyValuePair <string, object> > customDataToLog)
        {
            MailboxSession mailboxSession = invokeArgs.StoreSession as MailboxSession;

            if (mailboxSession == null)
            {
                return;
            }
            ADUser aduser = SharingPolicyAssistant.GetADUser(mailboxSession.MailboxOwner, mailboxSession.GetADRecipientSession(true, ConsistencyMode.IgnoreInvalid));

            if (aduser == null)
            {
                return;
            }
            if (ADRecipient.IsSystemMailbox(aduser.RecipientTypeDetails))
            {
                SharingPolicyAssistant.Tracer.TraceDebug <IExchangePrincipal, RecipientTypeDetails>((long)this.GetHashCode(), "{0}: Skipping the mailbox processing as it is a system mailbox. RecipientTypeDetails {1}.", mailboxSession.MailboxOwner, aduser.RecipientTypeDetails);
                return;
            }
            SharingPolicyAssistant.Tracer.TraceDebug <IExchangePrincipal>((long)this.GetHashCode(), "{0}: Begin process mailbox", mailboxSession.MailboxOwner);
            SharingPolicyCache sharingPolicyCache = SharingPolicyCache.Get(aduser);
            bool flag = false;

            if (sharingPolicyCache != null)
            {
                if (!this.IsMailboxNeedingPolicyUpdate(mailboxSession, sharingPolicyCache))
                {
                    return;
                }
                flag = this.ApplyPolicy(mailboxSession, sharingPolicyCache.Policy);
            }
            if (flag)
            {
                SharingPolicyAssistant.Tracer.TraceDebug <IExchangePrincipal>((long)this.GetHashCode(), "{0}: Storing applied policy to mailbox table.", mailboxSession.MailboxOwner);
                SharingPolicyAssistant.UpdateMailboxData(mailboxSession.Mailbox, (aduser.SharingPolicy == null && !sharingPolicyCache.BelongsToDehydratedContainer) ? SharingPolicyCache.DynamicDefaultPolicy.ObjectGuid.ToByteArray() : sharingPolicyCache.Policy.Id.ObjectGuid.ToByteArray(), sharingPolicyCache.Hash);
            }
            else
            {
                SharingPolicyAssistant.Tracer.TraceWarning <IExchangePrincipal>(0L, "{0}: Unable to find sharing policy for this mailbox.", mailboxSession.MailboxOwner);
                ExDateTime?exDateTime = mailboxSession.Mailbox.TryGetProperty(MailboxSchema.LastSharingPolicyAppliedTime) as ExDateTime?;
                byte[]     array      = mailboxSession.Mailbox.TryGetProperty(MailboxSchema.LastSharingPolicyAppliedHash) as byte[];
                if (exDateTime == null || array != null)
                {
                    SharingPolicyAssistant.UpdateMailboxData(mailboxSession.Mailbox, null, null);
                }
                else
                {
                    TimeSpan retryTimeSpan = ExDateTime.UtcNow.Subtract(exDateTime.Value);
                    if (ExDateTime.UtcNow.Subtract(exDateTime.Value) > SharingPolicyAssistant.RetryThresholdLimit)
                    {
                        SharingPolicyAssistant.SubmitInformationalWatson(mailboxSession.MailboxOwner, retryTimeSpan);
                        SharingPolicyAssistant.UpdateMailboxData(mailboxSession.Mailbox, null, null);
                    }
                }
            }
            SharingPolicyAssistant.Tracer.TraceDebug <IExchangePrincipal>((long)this.GetHashCode(), "{0}: End process mailbox", mailboxSession.MailboxOwner);
        }