public void TopicParserParseAssemblyTest()
        {
            var assemblyFile =
                @"C:\projects2010\Westwind.Utilities\Westwind.Utilities\bin\Release\net46\Westwind.Utilities.dll";

            var proj = DocProjectManager.Current.LoadProject(TestConfiguration.Current.Paths
                                                             .projectMarkdownMonsterHelpFile);

            var topic = new DocTopic(proj)
            {
                Title       = "Class Reference",
                DisplayType = "header",
            };

            topic.CreateRelativeSlugAndLink(topic);
            topic.Body = "Class Reference for " + assemblyFile;
            proj.Topics.Add(topic);
            topic.SaveTopicFile();

            var parser = new DocHound.Importer.TypeTopicParser(proj, topic)
            {
                NoInheritedMembers = true,
                ClassesToImport    = null
            };

            parser.ParseAssembly(assemblyFile, topic, true);
            proj.SaveProject();
        }
        private async void Button_ImportClick(object sender, RoutedEventArgs e)
        {
            if (Model.ParentTopic == null)
            {
                StatusBar.ShowStatusError("Please select a Parent Topic first.");
                return;
            }

            // make sure we have the same reference
            var parentTopic = Model.AddinModel.ActiveProject.FindTopicInTreeByValue(Model.ParentTopic, Model.AddinModel.ActiveProject.Topics);

            StatusBar.ShowStatusProgress("Generating class documentation...", 200_000_000);


            var importRootTopic = parentTopic.Copy();

            importRootTopic.Topics = new System.Collections.ObjectModel.ObservableCollection <DocTopic>();

            //BindingOperations.EnableCollectionSynchronization(Model.ParentTopic.Topics, TopicsCollectionLock);

            try
            {
                await Task.Run(() =>
                {
                    var parser = new DocHound.Importer.TypeTopicParser(Model.AddinModel.ActiveProject, importRootTopic)
                    {
                        NoInheritedMembers = Model.NoInheritedMembers,
                        ClassesToImport    = Model.ClassList
                    };
                    parser.ParseAssembly(Model.AssemblyPath, importRootTopic);
                });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


            foreach (var topic in importRootTopic.Topics)
            {
                parentTopic.Topics.Add(topic);
            }

            StatusBar.ShowStatusProgress("Saving project...");
            Model.AddinModel.ActiveProject.SaveProject();

            // Force the
            Model.AddinModel.TopicsTree.Model.OnPropertyChanged(nameof(TopicsTreeModel.TopicTree));

            StatusBar.ShowStatusSuccess("Class import completed.", 5000);

            //var parser = new TypeParser() { ParseXmlDocumentation = true,
            //    NoInheritedMembers = Model.NoInheritedMembers,
            //    ClassesToImport = Model.ClassList

            //};


            //var types = parser.GetAllTypes(Model.AssemblyPath);



            //RenderTypes(types);
        }