public static void EnumerateFolders(List <Folder> folderList, Folder startFolder, bool includeHiddenFolders)
        {
            TraceOutput.TraceEvent(TraceEventType.Information, 0, $"Enumerating {startFolder.Folders.Count} folders in {startFolder.Name}");
            if (!startFolder.HasSubfolders())
            {
                TraceOutput.TraceEvent(TraceEventType.Verbose, 0, "No subfolders found in folder specified");
                return;
            }

            foreach (Folder folder in startFolder.Folders)
            {
                if (folder.IsHidden() && !includeHiddenFolders)
                {
                    continue;
                }

                folderList.Add(folder);
                TraceOutput.TraceEvent(TraceEventType.Information, 0, $"\t{folder.Name}");

                if (folder.Folders.Count > 0)
                {
                    EnumerateFolders(folderList, folder, includeHiddenFolders);
                }
            }
        }
            public static bool IsHidden(this Folder folder)
            {
                bool b;

                if (folder.HasIMAPIProperty(IMAPIPropertyTags.PR_ATTR_HIDDEN) == 1)
                {
                    b = true;
                }
                else
                {
                    b = false;
                }
                TraceOutput.TraceEvent(TraceEventType.Verbose, 0, $"{folder.Name} is hidden: {b}");
                return(b);
            }
            public static bool HasSubfolders(this Folder folder)
            {
                bool b;

                if (folder.HasIMAPIProperty(IMAPIPropertyTags.PR_SUBFOLDERS) == 1)
                {
                    b = true;
                }
                else
                {
                    b = false;
                }
                TraceOutput.TraceEvent(TraceEventType.Verbose, 0, $"{folder.Name} has subfolders: {b}");
                return(b);
            }