UnityEditor.PackageExportTreeView.RecursiveComputeEnabledStateForFolders C# (CSharp) Method

RecursiveComputeEnabledStateForFolders() private method

private RecursiveComputeEnabledStateForFolders ( PackageExportTreeViewItem pitem, HashSet done ) : void
pitem PackageExportTreeViewItem
done HashSet
return void
        private void RecursiveComputeEnabledStateForFolders(PackageExportTreeViewItem pitem, HashSet<PackageExportTreeViewItem> done)
        {
            if (pitem.isFolder)
            {
                if (pitem.hasChildren)
                {
                    foreach (TreeViewItem item in pitem.children)
                    {
                        this.RecursiveComputeEnabledStateForFolders(item as PackageExportTreeViewItem, done);
                    }
                }
                if (!done.Contains(pitem))
                {
                    EnabledState folderChildrenEnabledState = this.GetFolderChildrenEnabledState(pitem);
                    pitem.enabledState = folderChildrenEnabledState;
                    if (folderChildrenEnabledState == EnabledState.Mixed)
                    {
                        done.Add(pitem);
                        for (PackageExportTreeViewItem item2 = pitem.parent as PackageExportTreeViewItem; item2 != null; item2 = item2.parent as PackageExportTreeViewItem)
                        {
                            if (!done.Contains(item2))
                            {
                                item2.enabledState = EnabledState.Mixed;
                                done.Add(item2);
                            }
                        }
                    }
                }
            }
        }