public static List <WellKnownFolder> DiscoverWellKnownFolders(IMailbox mailbox, int flags)
        {
            Dictionary <WellKnownFolderType, byte[]> dictionary = new Dictionary <WellKnownFolderType, byte[]>();
            bool flag = ((FolderHierarchyFlags)flags).HasFlag(FolderHierarchyFlags.PublicFolderMailbox);

            FolderHierarchyUtils.FindWellKnownFolders(mailbox, flag ? FolderHierarchyUtils.PublicFolderMailboxRefs : FolderHierarchyUtils.MailboxRefs, (PropTag[] pta) => mailbox.GetProps(pta), dictionary);
            if (!flag)
            {
                FolderHierarchyUtils.FindWellKnownFoldersWithinInbox(mailbox, dictionary);
            }
            List <WellKnownFolder> list = new List <WellKnownFolder>();

            foreach (KeyValuePair <WellKnownFolderType, byte[]> keyValuePair in dictionary)
            {
                list.Add(new WellKnownFolder((int)keyValuePair.Key, keyValuePair.Value));
            }
            return(list);
        }