Example #1
0
        // Token: 0x060006A5 RID: 1701 RVA: 0x00032CB8 File Offset: 0x00030EB8
        private void CollectItemsInFolder(DefaultFolderType folderToCollect)
        {
            EHAHiddenFolderCleanupEnforcer.Tracer.TraceDebug <EHAHiddenFolderCleanupEnforcer, DefaultFolderType>((long)this.GetHashCode(), "{0}: CollectItemsInFolder: folderToCollect={1}.", this, folderToCollect);
            StoreId storeId = this.folderIdsToProcess[folderToCollect];
            int     num     = 0;
            int     num2    = this.ItemsLeftToCollect();

            if (storeId != null)
            {
                using (Folder folder = Folder.Bind(base.MailboxDataForTags.MailboxSession, storeId))
                {
                    int num3 = base.FolderItemTypeCount(folder, ItemQueryType.None);
                    base.SysCleanupSubAssistant.ThrottleStoreCall();
                    if (num3 <= 0 || num3 <= num2)
                    {
                        EHAHiddenFolderCleanupEnforcer.Tracer.TraceDebug <EHAHiddenFolderCleanupEnforcer, DefaultFolderType, int>((long)this.GetHashCode(), "{0}: Deleting {1} folder with {2} items", this, folderToCollect, num3);
                        num = num3;
                        folder.Load(new PropertyDefinition[]
                        {
                            FolderSchema.ExtendedSize
                        });
                        object obj = folder.TryGetProperty(FolderSchema.ExtendedSize);
                        if (obj is long)
                        {
                            long num4 = (long)obj;
                            base.TagExpirationExecutor.AddToDoomedHardDeleteList(new ItemData(folder.Id, (int)num4), true);
                        }
                    }
                    else
                    {
                        base.SysCleanupSubAssistant.ThrottleStoreCall();
                        using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.None, null, null, EHAHiddenFolderCleanupEnforcer.PropertyColumns.PropertyDefinitions))
                        {
                            queryResult.SeekToOffset(SeekReference.OriginBeginning, 0);
                            bool flag = true;
                            while (flag)
                            {
                                int num5 = num2 - num;
                                if (num5 > 0)
                                {
                                    object[][] rows = queryResult.GetRows(num5, out flag);
                                    foreach (object[] rawProperties in rows)
                                    {
                                        PropertyArrayProxy propertyArrayProxy = new PropertyArrayProxy(EHAHiddenFolderCleanupEnforcer.PropertyColumns, rawProperties);
                                        EHAHiddenFolderCleanupEnforcer.Tracer.TraceDebug <EHAHiddenFolderCleanupEnforcer, VersionedId, DefaultFolderType>((long)this.GetHashCode(), "{0}: Deleting item id [{1}] in folder {2} ", this, (VersionedId)propertyArrayProxy[ItemSchema.Id], folderToCollect);
                                        base.TagExpirationExecutor.AddToDoomedHardDeleteList(new ItemData((VersionedId)propertyArrayProxy[ItemSchema.Id], (StoreObjectId)propertyArrayProxy[StoreObjectSchema.ParentItemId], (int)propertyArrayProxy[ItemSchema.Size]), true);
                                    }
                                    num += rows.Length;
                                }
                                else
                                {
                                    flag = false;
                                }
                            }
                        }
                    }
                }
            }
            this.IncrementFolderCollectCount(folderToCollect, num);
        }
        // Token: 0x060006B3 RID: 1715 RVA: 0x00033498 File Offset: 0x00031698
        private void ProcessFolderContents(Folder folder, DefaultFolderType folderTypeToCollect, ItemQueryType itemQueryType)
        {
            int num = base.FolderItemTypeCount(folder, itemQueryType);

            if (num <= 0)
            {
                MigrateToArchiveEnforcer.Tracer.TraceDebug <MigrateToArchiveEnforcer, string, ItemQueryType>((long)this.GetHashCode(), "{0}:{1} Folder is Empty of type {2}", this, folder.Id.ObjectId.ToHexEntryId(), itemQueryType);
                return;
            }
            using (QueryResult queryResult = folder.ItemQuery(itemQueryType, null, null, MigrateToArchiveEnforcer.PropertyColumns.PropertyDefinitions))
            {
                queryResult.SeekToOffset(SeekReference.OriginBeginning, 0);
                bool flag = false;
                while (!flag)
                {
                    object[][] rows = queryResult.GetRows(100);
                    if (rows.Length <= 0)
                    {
                        break;
                    }
                    foreach (object[] rawProperties in rows)
                    {
                        PropertyArrayProxy itemProperties = new PropertyArrayProxy(MigrateToArchiveEnforcer.PropertyColumns, rawProperties);
                        this.EnlistItem(itemProperties, folderTypeToCollect);
                        if (this.MaxItemsCollectedForThisCycle(folderTypeToCollect))
                        {
                            flag = true;
                            break;
                        }
                    }
                    base.SysCleanupSubAssistant.ThrottleStoreCallAndCheckForShutdown(base.MailboxDataForTags.MailboxSession.MailboxOwner);
                }
            }
        }
        // Token: 0x060006B6 RID: 1718 RVA: 0x0003364C File Offset: 0x0003184C
        private bool EnlistItem(PropertyArrayProxy itemProperties, DefaultFolderType folderTypeToCollect)
        {
            if (!(itemProperties[ItemSchema.Id] is VersionedId))
            {
                MigrateToArchiveEnforcer.Tracer.TraceError <MigrateToArchiveEnforcer>((long)this.GetHashCode(), "{0}: We could not get id of this item. Skipping it.", this);
                return(true);
            }
            StoreObjectId storeObjectId = itemProperties[StoreObjectSchema.ParentItemId] as StoreObjectId;

            if (storeObjectId == null)
            {
                MigrateToArchiveEnforcer.Tracer.TraceError <MigrateToArchiveEnforcer>((long)this.GetHashCode(), "{0}: We could not get parent id of this item. Skipping it.", this);
                return(true);
            }
            base.TagExpirationExecutor.AddToDoomedMoveToArchiveList(new ItemData((VersionedId)itemProperties[ItemSchema.Id], storeObjectId, (int)itemProperties[ItemSchema.Size]));
            if (folderTypeToCollect == DefaultFolderType.Inbox)
            {
                this.itemsMovedInbox++;
            }
            else
            {
                this.itemsMovedSentItems++;
            }
            this.totalItemsMoved++;
            return(true);
        }
        // Token: 0x0600061E RID: 1566 RVA: 0x0002EEC8 File Offset: 0x0002D0C8
        private void EnlistItem(PropertyArrayProxy itemProperties)
        {
            VersionedId versionedId = itemProperties[ItemSchema.Id] as VersionedId;

            if (versionedId == null)
            {
                SupplementExpirationEnforcer.Tracer.TraceError <SupplementExpirationEnforcer>((long)this.GetHashCode(), "{0}: We could not get id of this item. Skipping it.", this);
                return;
            }
            try
            {
                if (!this.IsIndeedTaggedForExpiration(itemProperties))
                {
                    SupplementExpirationEnforcer.Tracer.TraceError <SupplementExpirationEnforcer>((long)this.GetHashCode(), "{0}: Item does not have SystemData bit set. Skipping it.", this);
                    return;
                }
            }
            catch (ArgumentOutOfRangeException arg)
            {
                SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, string, ArgumentOutOfRangeException>((long)this.GetHashCode(), "{0}: Corrupted Data. Skip current item {1}. Exception: {2}", this, versionedId.ObjectId.ToHexEntryId(), arg);
                return;
            }
            this.itemsExpired++;
            base.TagExpirationExecutor.AddToDoomedHardDeleteList(new ItemData(versionedId, (int)itemProperties[ItemSchema.Size]), false);
        }
        // Token: 0x06000621 RID: 1569 RVA: 0x0002F154 File Offset: 0x0002D354
        private bool IsFolderSkippable(PropertyArrayProxy folderProperties)
        {
            VersionedId versionedId = folderProperties[FolderSchema.Id] as VersionedId;

            if (versionedId == null)
            {
                SupplementExpirationEnforcer.Tracer.TraceError <SupplementExpirationEnforcer>((long)this.GetHashCode(), "{0}: We could not get id of this folder. Skipping it.", this);
                return(true);
            }
            object obj = folderProperties[FolderSchema.MapiFolderType];

            if (obj is int && ((FolderType)obj & FolderType.Search) == FolderType.Search)
            {
                SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, VersionedId>((long)this.GetHashCode(), "{0}: The folder {1} is a search folder. Skipping it for expiration.", this, versionedId);
                return(true);
            }
            if (!(folderProperties[FolderSchema.FolderFlags] is int))
            {
                SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, VersionedId>((long)this.GetHashCode(), "{0}: The FolderFlags prop doesn't not exist on folder {1}. Skipping it for expiration.", this, versionedId);
                return(true);
            }
            StoreFolderFlags storeFolderFlags = (StoreFolderFlags)folderProperties[FolderSchema.FolderFlags];

            if ((storeFolderFlags & StoreFolderFlags.FolderIPM) == StoreFolderFlags.FolderIPM)
            {
                SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, VersionedId>((long)this.GetHashCode(), "{0}: The folder {1} is under IPM subtree. Skipping it for expiration.", this, versionedId);
                return(true);
            }
            DefaultFolderType defaultFolderType = base.MailboxDataForTags.MailboxSession.IsDefaultFolderType(versionedId);

            if (defaultFolderType == DefaultFolderType.System || defaultFolderType == DefaultFolderType.AdminAuditLogs || defaultFolderType == DefaultFolderType.Audits || defaultFolderType == DefaultFolderType.RecoverableItemsRoot || defaultFolderType == DefaultFolderType.RecoverableItemsVersions || defaultFolderType == DefaultFolderType.RecoverableItemsDeletions || defaultFolderType == DefaultFolderType.RecoverableItemsPurges || defaultFolderType == DefaultFolderType.RecoverableItemsDiscoveryHolds || defaultFolderType == DefaultFolderType.RecoverableItemsMigratedMessages || defaultFolderType == DefaultFolderType.CalendarLogging)
            {
                SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, DefaultFolderType>((long)this.GetHashCode(), "{0}: This folder type is {1}. Skipping it for expiration.", this, defaultFolderType);
                return(true);
            }
            if (base.MailboxDataForTags.ElcUserInformation.ProcessEhaMigratedMessages && !base.MailboxDataForTags.MailboxSession.MailboxOwner.MailboxInfo.IsArchive)
            {
                using (Folder folder = Folder.Bind(base.MailboxDataForTags.MailboxSession, versionedId, new PropertyDefinition[]
                {
                    FolderSchema.DisplayName
                }))
                {
                    if (string.Compare(folder.DisplayName, ElcGlobals.MigrationFolderName, true) == 0 || string.Compare(folder.DisplayName, DefaultFolderType.Inbox.ToString(), true) == 0 || string.Compare(folder.DisplayName, DefaultFolderType.SentItems.ToString(), true) == 0)
                    {
                        SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, string>((long)this.GetHashCode(), "{0}: This is a migration folder in primary mailbox {1}. SupplementEnforcer skips it as it has a separate enforcer.", this, folder.DisplayName);
                        return(true);
                    }
                }
            }
            int num  = (int)folderProperties[FolderSchema.ItemCount];
            int num2 = (int)folderProperties[FolderSchema.AssociatedItemCount];

            if (num == 0 && num2 == 0)
            {
                SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, VersionedId>((long)this.GetHashCode(), "{0}: The Folder {1} is empty. Skipping it for expiration", this, versionedId);
                return(true);
            }
            return(false);
        }
        // Token: 0x06000675 RID: 1653 RVA: 0x00031510 File Offset: 0x0002F710
        private bool IsTimeToDie(PropertyArrayProxy itemProperties, EnhancedTimeSpan ageLimit)
        {
            if (ElcGlobals.ExpireDumpsterRightNow)
            {
                return(true);
            }
            object   obj = itemProperties[StoreObjectSchema.LastModifiedTime];
            TimeSpan t   = base.MailboxDataForTags.UtcNow - (DateTime)((ExDateTime)obj).ToUtc();

            return(t >= ageLimit);
        }
        // Token: 0x060005E0 RID: 1504 RVA: 0x0002CDB8 File Offset: 0x0002AFB8
        private bool EnlistItem(PropertyArrayProxy itemProperties, DefaultFolderType folderTypeToCollect, DumpsterExpirationEnforcer.AgeLimitAndAction ageLimitAndAction)
        {
            VersionedId versionedId = itemProperties[ItemSchema.Id] as VersionedId;

            if (versionedId == null)
            {
                DumpsterExpirationEnforcer.Tracer.TraceError <DumpsterExpirationEnforcer>((long)this.GetHashCode(), "{0}: We could not get id of this item. Skipping it.", this);
                return(true);
            }
            DumpsterExpirationEnforcer.AgeLimitAndAction ageLimitAndAction2 = ageLimitAndAction;
            if (!this.IsTimeToDie(itemProperties, ageLimitAndAction2.AgeLimit))
            {
                DumpsterExpirationEnforcer.Tracer.TraceDebug <DumpsterExpirationEnforcer, VersionedId, EnhancedTimeSpan>((long)this.GetHashCode(), "{0}: Item {1} newer than minAgeLimitForFolder {2}.", this, versionedId, ageLimitAndAction2.AgeLimit);
                return(false);
            }
            if (ageLimitAndAction2.RetentionAction == RetentionActionType.PermanentlyDelete)
            {
                bool disableCalendarLogging = false;
                if (CalendarLoggingHelper.IsCalendarItem(versionedId.ObjectId))
                {
                    disableCalendarLogging = this.IsTimeToDie(itemProperties, ageLimitAndAction2.AgeLimit);
                }
                if (base.MailboxDataForTags.AbsoluteLitigationHoldEnabled)
                {
                    ItemData itemData = new ItemData(versionedId, (StoreObjectId)itemProperties[StoreObjectSchema.ParentItemId], ItemData.EnforcerType.DumpsterExpirationEnforcer, (int)itemProperties[ItemSchema.Size]);
                    base.TagExpirationExecutor.AddToDoomedMoveToPurgesList(itemData, disableCalendarLogging);
                    this.itemsMovedToPurges++;
                }
                else if (base.MailboxDataForTags.QueryBasedHoldEnabled)
                {
                    ItemData itemData2 = new ItemData(versionedId, (StoreObjectId)itemProperties[StoreObjectSchema.ParentItemId], ItemData.EnforcerType.DumpsterExpirationEnforcer, (int)itemProperties[ItemSchema.Size]);
                    base.TagExpirationExecutor.AddToDoomedMoveToDiscoveryHoldsList(itemData2, disableCalendarLogging);
                }
                else
                {
                    ItemData itemData3 = new ItemData(versionedId, ItemData.EnforcerType.DumpsterExpirationEnforcer, (int)itemProperties[ItemSchema.Size]);
                    base.TagExpirationExecutor.AddToDoomedHardDeleteList(itemData3, disableCalendarLogging);
                }
                this.itemsExpired++;
            }
            else
            {
                base.TagExpirationExecutor.AddToDoomedMoveToArchiveDumpsterList(new ItemData(versionedId, ItemData.EnforcerType.DumpsterExpirationEnforcer, (int)itemProperties[ItemSchema.Size]), folderTypeToCollect);
                this.itemsMoved++;
            }
            return(true);
        }
 // Token: 0x06000620 RID: 1568 RVA: 0x0002EFA0 File Offset: 0x0002D1A0
 private void ProcessFolderContents(StoreId folderId, ItemQueryType itemQueryType)
 {
     SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, StoreId, ItemQueryType>((long)this.GetHashCode(), "{0}: Starting to process folder {1} with query type {2}.", this, folderId, itemQueryType);
     using (Folder folder = Folder.Bind(base.MailboxDataForTags.MailboxSession, folderId))
     {
         if (base.FolderItemTypeCount(folder, itemQueryType) <= 0)
         {
             SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer, string, ItemQueryType>((long)this.GetHashCode(), "{0}:{1} Folder is Empty of type {2}", this, folder.Id.ObjectId.ToHexEntryId(), itemQueryType);
         }
         else
         {
             using (QueryResult queryResult = folder.ItemQuery(itemQueryType, null, new SortBy[]
             {
                 new SortBy(ItemSchema.RetentionDate, SortOrder.Descending)
             }, SupplementExpirationEnforcer.ItemPropertyColumns.PropertyDefinitions))
             {
                 ComparisonFilter seekFilter = new ComparisonFilter(ComparisonOperator.LessThanOrEqual, ItemSchema.RetentionDate, base.MailboxDataForTags.UtcNow.Date);
                 queryResult.SeekToCondition(SeekReference.OriginBeginning, seekFilter);
                 bool flag = false;
                 while (!flag)
                 {
                     object[][] rows = queryResult.GetRows(100);
                     if (rows.Length <= 0)
                     {
                         break;
                     }
                     foreach (object[] rawProperties in rows)
                     {
                         PropertyArrayProxy propertyArrayProxy = new PropertyArrayProxy(SupplementExpirationEnforcer.ItemPropertyColumns, rawProperties);
                         if (!(propertyArrayProxy[ItemSchema.RetentionDate] is ExDateTime))
                         {
                             SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer>((long)this.GetHashCode(), "{0}: Retention date is missing. Skipping items from here on.", this);
                             flag = true;
                             break;
                         }
                         this.EnlistItem(propertyArrayProxy);
                     }
                     base.SysCleanupSubAssistant.ThrottleStoreCallAndCheckForShutdown(base.MailboxDataForTags.MailboxSession.MailboxOwner);
                 }
             }
         }
     }
 }
        // Token: 0x06000673 RID: 1651 RVA: 0x0003133C File Offset: 0x0002F53C
        private void ProcessFolderContents(Folder folder, ItemQueryType itemQueryType)
        {
            int num = base.FolderItemTypeCount(folder, itemQueryType);

            if (num <= 0)
            {
                CalendarLogExpirationEnforcer.Tracer.TraceDebug <CalendarLogExpirationEnforcer, string, ItemQueryType>((long)this.GetHashCode(), "{0}:{1} Folder is Empty of type {2}", this, folder.Id.ObjectId.ToHexEntryId(), itemQueryType);
                return;
            }
            using (QueryResult queryResult = folder.ItemQuery(itemQueryType, null, new SortBy[]
            {
                new SortBy(CalendarLogExpirationEnforcer.agePropertyDefinition, SortOrder.Ascending)
            }, CalendarLogExpirationEnforcer.PropertyColumns.PropertyDefinitions))
            {
                queryResult.SeekToOffset(SeekReference.OriginBeginning, 0);
                bool flag = false;
                while (!flag)
                {
                    object[][] rows = queryResult.GetRows(100);
                    if (rows.Length <= 0)
                    {
                        break;
                    }
                    foreach (object[] rawProperties in rows)
                    {
                        PropertyArrayProxy propertyArrayProxy = new PropertyArrayProxy(CalendarLogExpirationEnforcer.PropertyColumns, rawProperties);
                        if (!ElcMailboxHelper.Exists(propertyArrayProxy[CalendarLogExpirationEnforcer.agePropertyDefinition]))
                        {
                            CalendarLogExpirationEnforcer.Tracer.TraceDebug <CalendarLogExpirationEnforcer>((long)this.GetHashCode(), "{0}: Last Modified date is missing. Skipping items from here on.", this);
                            flag = true;
                            break;
                        }
                        if (!this.EnlistItem(propertyArrayProxy))
                        {
                            flag = true;
                            break;
                        }
                    }
                    base.SysCleanupSubAssistant.ThrottleStoreCallAndCheckForShutdown(base.MailboxDataForTags.MailboxSession.MailboxOwner);
                }
            }
        }
        // Token: 0x060005F5 RID: 1525 RVA: 0x0002D47C File Offset: 0x0002B67C
        private bool EnlistItem(PropertyArrayProxy itemProperties)
        {
            VersionedId versionedId = itemProperties[ItemSchema.Id] as VersionedId;

            if (versionedId == null)
            {
                DumpsterQuotaEnforcer.Tracer.TraceError <DumpsterQuotaEnforcer>((long)this.GetHashCode(), "{0}: We could not get id of this item. Skipping it.", this);
                return(true);
            }
            object obj = itemProperties[ItemSchema.Size];

            if (obj == null)
            {
                DumpsterQuotaEnforcer.Tracer.TraceError <DumpsterQuotaEnforcer>((long)this.GetHashCode(), "{0}: We could not get size of this item. Skipping it.", this);
                return(true);
            }
            this.deletedItemsSize += (ulong)((long)((int)obj));
            this.itemsExpired++;
            if (base.MailboxDataForTags.QueryBasedHoldEnabled)
            {
                ItemData itemData = new ItemData(versionedId, itemProperties.GetProperty <StoreObjectId>(StoreObjectSchema.ParentItemId), ItemData.EnforcerType.DumpsterQuotaEnforcer, itemProperties.GetProperty <int>(ItemSchema.Size));
                base.TagExpirationExecutor.AddToDoomedMoveToDiscoveryHoldsList(itemData, false);
            }
            else
            {
                ItemData itemData2 = new ItemData(versionedId, ItemData.EnforcerType.DumpsterQuotaEnforcer, itemProperties.GetProperty <int>(ItemSchema.Size));
                base.TagExpirationExecutor.AddToDoomedHardDeleteList(itemData2, false);
            }
            bool flag = this.dumpsterSize - this.deletedItemsSize > this.dumpsterQuota.Value.ToBytes();

            if (!flag)
            {
                DumpsterQuotaEnforcer.Tracer.TraceDebug((long)this.GetHashCode(), "{0}: Collected sufficient items. dumspterSize={1}, deletedItemsSize={2}, itemId={3}.", new object[]
                {
                    this,
                    this.dumpsterSize,
                    this.deletedItemsSize,
                    versionedId
                });
            }
            return(flag);
        }
        // Token: 0x06000674 RID: 1652 RVA: 0x00031474 File Offset: 0x0002F674
        private bool EnlistItem(PropertyArrayProxy itemProperties)
        {
            VersionedId versionedId = itemProperties[ItemSchema.Id] as VersionedId;

            if (versionedId == null)
            {
                CalendarLogExpirationEnforcer.Tracer.TraceError <CalendarLogExpirationEnforcer>((long)this.GetHashCode(), "{0}: We could not get id of this item. Skipping it.", this);
                return(true);
            }
            if (!CalendarLoggingHelper.IsCalendarItem(versionedId.ObjectId))
            {
                return(true);
            }
            if (!this.IsTimeToDie(itemProperties, this.AgeLimit))
            {
                CalendarLogExpirationEnforcer.Tracer.TraceDebug <CalendarLogExpirationEnforcer, VersionedId, EnhancedTimeSpan>((long)this.GetHashCode(), "{0}: Item {1} newer than minAgeLimitForFolder {2}.", this, versionedId, this.AgeLimit);
                return(false);
            }
            base.TagExpirationExecutor.AddToDoomedHardDeleteList(new ItemData(versionedId, (int)itemProperties[ItemSchema.Size]), true);
            return(true);
        }
 // Token: 0x0600061D RID: 1565 RVA: 0x0002EDE0 File Offset: 0x0002CFE0
 private void CollectItemsToExpireInNonIpm()
 {
     using (IEnumerator <List <object[]> > folderHierarchy = FolderProcessor.GetFolderHierarchy(DefaultFolderType.Configuration, base.MailboxDataForTags.MailboxSession, SupplementExpirationEnforcer.FolderPropertyColumns.PropertyDefinitions))
     {
         while (folderHierarchy != null && folderHierarchy.MoveNext())
         {
             List <object[]> list = folderHierarchy.Current;
             if (list != null)
             {
                 SupplementExpirationEnforcer.Tracer.TraceDebug <SupplementExpirationEnforcer>((long)this.GetHashCode(), "{0}: Got folder hierarchy under non-ipm subtree.", this);
                 foreach (object[] rawProperties in list)
                 {
                     PropertyArrayProxy propertyArrayProxy = new PropertyArrayProxy(SupplementExpirationEnforcer.FolderPropertyColumns, rawProperties);
                     if (!this.IsFolderSkippable(propertyArrayProxy))
                     {
                         VersionedId property = propertyArrayProxy.GetProperty <VersionedId>(FolderSchema.Id);
                         this.ProcessFolderContents(property, ItemQueryType.None);
                         this.ProcessFolderContents(property, ItemQueryType.Associated);
                     }
                 }
             }
         }
     }
 }
 // Token: 0x0600061F RID: 1567 RVA: 0x0002EF8C File Offset: 0x0002D18C
 private bool IsIndeedTaggedForExpiration(PropertyArrayProxy itemProperties)
 {
     return(FlagsMan.IsSystemDataSet(itemProperties[StoreObjectSchema.RetentionFlags]));
 }