private void Load(UserContext userContext, MailboxSession session, object[][] rows) { int num = 0; while (num < rows.Length && !NavigationNodeCollection.CheckItemClassAndSection(this.navigationNodeGroupSection, rows[num])) { num++; } if (this.IsFavorites) { base.Clear(); base.Add(NavigationNodeCollection.CreateFavoritesGroup()); } else { int num2 = num; while (num2 < rows.Length && NavigationNodeCollection.CheckItemClassAndSection(this.navigationNodeGroupSection, rows[num2])) { if (NavigationNodeCollection.CheckNodeTypes(rows[num2], new NavigationNodeType[] { NavigationNodeType.Header })) { this.UniquelyAddGroup(new NavigationNodeGroup(rows[num2], NavigationNodeCollection.PropertyMap)); } num2++; } } Dictionary <Guid, int> dictionary = new Dictionary <Guid, int>(base.Count); for (int i = 0; i < base.Count; i++) { dictionary.Add(base[i].NavigationNodeGroupClassId, i); } while (num < rows.Length && NavigationNodeCollection.CheckItemClassAndSection(this.navigationNodeGroupSection, rows[num])) { if (NavigationNodeCollection.CheckNodeTypes(rows[num], new NavigationNodeType[] { NavigationNodeType.NormalFolder, NavigationNodeType.SharedFolder, NavigationNodeType.SmartFolder, NavigationNodeType.GSCalendar })) { bool includeArchive = this.GroupSection == NavigationNodeGroupSection.First; NavigationNodeFolder navigationNodeFolder = new NavigationNodeFolder(userContext, session, includeArchive, rows[num], NavigationNodeCollection.PropertyMap); if (navigationNodeFolder.IsValid) { int num3 = -1; if (this.IsFavorites) { num3 = 0; } else { Guid guid = navigationNodeFolder.NavigationNodeParentGroupClassId; if (!guid.Equals(Guid.Empty) && dictionary.ContainsKey(guid)) { num3 = dictionary[guid]; } else { NavigationNodeGroup node = null; if (!guid.Equals(Guid.Empty) && !string.IsNullOrEmpty(navigationNodeFolder.NavigationNodeGroupName)) { node = NavigationNodeCollection.CreateCustomizedGroup(this.navigationNodeGroupSection, navigationNodeFolder.NavigationNodeGroupName, guid); } else { NavigationNodeGroupType navigationNodeGroupType = NavigationNodeGroupType.OtherFoldersGroup; switch (navigationNodeFolder.NavigationNodeType) { case NavigationNodeType.NormalFolder: navigationNodeGroupType = NavigationNodeGroupType.MyFoldersGroup; break; case NavigationNodeType.SharedFolder: navigationNodeGroupType = NavigationNodeGroupType.SharedFoldersGroup; break; } guid = NavigationNodeCollection.GetDefaultGroupClassId(navigationNodeGroupType); if (dictionary.ContainsKey(guid)) { num3 = dictionary[guid]; } else { node = NavigationNodeCollection.CreateDefaultGroup(navigationNodeGroupType, this.navigationNodeGroupSection); } } if (num3 < 0) { base.Add(node); num3 = base.Count - 1; dictionary[guid] = num3; } } } this.UniquelyAddFolder(navigationNodeFolder, num3); } } num++; } this.serverCollection = new NavigationNodeList <NavigationNodeGroup>(); base.CopyToList(this.serverCollection); foreach (NavigationNodeGroup navigationNodeGroup in this) { foreach (NavigationNodeFolder navigationNodeFolder2 in navigationNodeGroup.Children) { if (navigationNodeFolder2.FolderId != null && !navigationNodeFolder2.IsFlagSet(NavigationNodeFlags.PublicFolderFavorite)) { navigationNodeFolder2.FixLegacyDNRelatedFlag(session); } } } }