public override void BuildChildNodes(ITreeBuilder builder, object dataObject)
        {
            string path = GetFolderPath(dataObject);

            if (builder.Options ["ShowAllFiles"] && Directory.Exists(path))
            {
                Project project = (Project)builder.GetParentDataItem(typeof(Project), true);
                SolutionFolderFileCollection folderFiles = null;
                if (dataObject is Solution)
                {
                    folderFiles = ((Solution)dataObject).RootFolder.Files;
                }
                else if (dataObject is SolutionFolder)
                {
                    folderFiles = ((SolutionFolder)dataObject).Files;
                }

                foreach (string file in Directory.GetFiles(path))
                {
                    if ((project == null || project.Files.GetFile(file) == null) && (folderFiles == null || !folderFiles.Contains(file)))
                    {
                        builder.AddChild(new SystemFile(file, project));
                    }
                }

                foreach (string folder in Directory.GetDirectories(path))
                {
                    if (!builder.HasChild(Path.GetFileName(folder), typeof(ProjectFolder)))
                    {
                        builder.AddChild(new ProjectFolder(folder, project));
                    }
                }
            }
        }
        public override void BuildChildNodes(ITreeBuilder builder, object dataObject)
        {
            if (!builder.Options ["ShowAllFiles"])
            {
                return;
            }

            string path = GetFolderPath(dataObject);

            if (Directory.Exists(path))
            {
                Project project = (Project)builder.GetParentDataItem(typeof(Project), true);
                SolutionFolderFileCollection folderFiles = null;
                if (dataObject is Solution)
                {
                    folderFiles = ((Solution)dataObject).RootFolder.Files;
                }
                else if (dataObject is SolutionFolder)
                {
                    folderFiles = ((SolutionFolder)dataObject).Files;
                }

                builder.AddChildren(Directory.EnumerateFiles(path)
                                    .Where(file => (project == null || project.Files.GetFile(file) == null) && (folderFiles == null || !folderFiles.Contains(file)))
                                    .Select(file => new SystemFile(file, project)));

                builder.AddChildren(Directory.EnumerateDirectories(path)
                                    .Where(folder => !builder.HasChild(Path.GetFileName(folder), typeof(ProjectFolder)))
                                    .Select(folder => new ProjectFolder(folder, project)));
            }
        }