// Token: 0x06000918 RID: 2328 RVA: 0x00041798 File Offset: 0x0003F998
        public static void FinishCacheSession(UserContext userContext)
        {
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            FolderMruCache cacheInstance = FolderMruCache.GetCacheInstance(userContext);

            cacheInstance.InternalFinishCacheSession();
            cacheInstance.Commit();
        }
        // Token: 0x06000917 RID: 2327 RVA: 0x0004174C File Offset: 0x0003F94C
        public static void DeleteFromCache(StoreObjectId folderId, UserContext userContext)
        {
            if (folderId == null)
            {
                throw new ArgumentNullException("folderId");
            }
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            FolderMruCache cacheInstance        = FolderMruCache.GetCacheInstance(userContext);
            int            entryIndexByFolderId = cacheInstance.GetEntryIndexByFolderId(folderId);

            if (entryIndexByFolderId == -1)
            {
                return;
            }
            cacheInstance.ShiftBackEntries(entryIndexByFolderId + 1);
            cacheInstance.Commit();
        }
        // Token: 0x06000916 RID: 2326 RVA: 0x00041700 File Offset: 0x0003F900
        public static FolderMruCache GetCacheInstance(UserContext userContext)
        {
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            FolderMruCache folderMruCache = null;

            if (!userContext.IsMruSessionStarted)
            {
                userContext.IsMruSessionStarted = true;
                folderMruCache = new FolderMruCache(userContext);
                folderMruCache.StartCacheSession();
                folderMruCache.Commit();
            }
            if (folderMruCache == null)
            {
                return(new FolderMruCache(userContext));
            }
            return(folderMruCache);
        }
        // Token: 0x06000921 RID: 2337 RVA: 0x00041A38 File Offset: 0x0003FC38
        private void InternalFinishCacheSession()
        {
            int num = -1;
            int i   = 0;

            while (i < this.cacheLength)
            {
                FolderMruCacheEntry folderMruCacheEntry = this.cacheEntries[i];
                if (!folderMruCacheEntry.UsedInCurrentSession)
                {
                    folderMruCacheEntry.NumberOfSessionsSinceLastUse++;
                }
                else
                {
                    folderMruCacheEntry.NumberOfSessionsSinceLastUse = 0;
                }
                int numberOfSessionsSinceLastUse = folderMruCacheEntry.NumberOfSessionsSinceLastUse;
                if (numberOfSessionsSinceLastUse <= 12)
                {
                    if (numberOfSessionsSinceLastUse <= 6)
                    {
                        if (numberOfSessionsSinceLastUse != 3 && numberOfSessionsSinceLastUse != 6)
                        {
                            goto IL_E9;
                        }
                    }
                    else if (numberOfSessionsSinceLastUse != 9)
                    {
                        if (numberOfSessionsSinceLastUse != 12)
                        {
                            goto IL_E9;
                        }
                        num = FolderMruCache.ComputeDecay(0.25, 2, folderMruCacheEntry.UsageCount);
                        goto IL_FA;
                    }
                    num = 1;
                }
                else if (numberOfSessionsSinceLastUse <= 23)
                {
                    if (numberOfSessionsSinceLastUse != 17)
                    {
                        if (numberOfSessionsSinceLastUse != 23)
                        {
                            goto IL_E9;
                        }
                        num = FolderMruCache.ComputeDecay(0.5, 4, folderMruCacheEntry.UsageCount);
                    }
                    else
                    {
                        num = FolderMruCache.ComputeDecay(0.25, 3, folderMruCacheEntry.UsageCount);
                    }
                }
                else if (numberOfSessionsSinceLastUse != 26)
                {
                    if (numberOfSessionsSinceLastUse != 31)
                    {
                        goto IL_E9;
                    }
                    num = 0;
                    folderMruCacheEntry.UsageCount = 0;
                }
                else
                {
                    num = FolderMruCache.ComputeDecay(0.75, 5, folderMruCacheEntry.UsageCount);
                }
IL_FA:
                if (num > 0)
                {
                    folderMruCacheEntry.DecayUsage(num);
                }
                i++;
                continue;
IL_E9:
                if (folderMruCacheEntry.NumberOfSessionsSinceLastUse > 31)
                {
                    folderMruCacheEntry.UsageCount = 0;
                    goto IL_FA;
                }
                goto IL_FA;
            }
        }