/// <summary>
        /// Считывает описание элеметов MSBuild и заполняет ими TreeView.
        /// </summary>
        /// <param name="msBuildHelper">MsBuildProjectHelper</param>
        private void FillItemsView(MsBuildProjectHelper msBuildHelper)
        {
            _projectTreeView.BeginUpdate();
            try
            {
                // Первый проходом считываем элементы группируя их по типам.
                // itemTypesMap содержит ассоциативный массив имен типов элементов
                // и списков элементов.
                ItemTypesMap itemTypesMap = InitItemTypesMap(msBuildHelper);

                // Сортировка в TreeView делается очень медленно. По этому запрещаем
                // ее и выполняем ее потом вручную.
                _projectTreeView.TreeViewNodeSorter = null;
                _projectTreeView.Sorted             = false;
                // Очищаем TreeView.
                _projectTreeView.Nodes.Clear();

                // Эта переменная будет содержать список корневых веток TreeView.
                TreeNodeCollection rootNodes = _projectTreeView.Nodes;

                // Для каждого типа элементов...
                foreach (StrTreeNodePair elem in itemTypesMap)
                {
                    // ... создаем корневую TreeView-ветку...
                    TreeNode typeNode = new TreeNode(elem.Key);
                    rootNodes.Add(typeNode);

                    // Эта переменная будет содержать мап путь/TreeView-веток
                    // для этого пути.
                    TreeMap treeMap = new TreeMap();

                    // Для каждого элемента данного типа...
                    foreach (TreeNode node in elem.Value)
                    {
                        // ... получаем путь к фалу.
                        string dir = Path.GetDirectoryName(node.Text);
                        // Находим соотвествующий фолдер (TreeView-ветку его описывающую).
                        TreeNode folder = GetParentFolder(typeNode, treeMap, dir);
                        // Получаем имя файла...
                        string file = Path.GetFileName(node.Text);
                        // ... которое используем в качестве имени элемента.
                        node.Text = file;
                        // Назначаем иконки файлов и добавляем ветку.
                        const int FileImageIndex = 1;
                        node.ImageIndex         = FileImageIndex;
                        node.SelectedImageIndex = FileImageIndex;
                        folder.Nodes.Add(node);
                    }
                }

                // Закат солнца вручную. :) Ручная сортировка требуется в виду
                // диких тормозов встроенной в TreeView сортировки.
                // Возможно к релизу эту проблему стронят, но пока...
                SortTreeNodes(rootNodes, new MSBuildTreeViewNodeSorter());
            }
            finally
            {
                // Что бы не случилось нужно разрешить отрисовку. Иначе любой глюк
                // приведет к непотребному виду TreeView.
                _projectTreeView.EndUpdate();
            }
        }