private TreeNode InsertFsi(List<String> summary, IFileSystemItem fsi,
            Boolean insertSubfolders, Boolean isRoot)
        {
            // рисунок нода
            Int32 imageIndex;
            if (isRoot)
                imageIndex = 0;
            else
                imageIndex = fsi.ItemType == FileSystemItemType.Directory ? 1 : 2;

            // создаем нод
            TreeNode aNode = new TreeNode(fsi.ToString());
            aNode.ImageIndex = imageIndex;
            aNode.SelectedImageIndex = imageIndex;

            // данные нода
            aNode.Tag = fsi;

            // в отчет
            if (fsi.ItemType == FileSystemItemType.File)
                summary.Add(String.Format("{0}, {1}", fsi.Name, fsi.Version));

            // добавляем вложенные элементы
            foreach (IFileSystemItem subFsi in fsi.SubItems)
            {
                if (subFsi.ItemType == FileSystemItemType.File)
                    aNode.Nodes.Add(InsertFsi(summary, subFsi, false, false));
                else
                {
                    if (insertSubfolders)
                        aNode.Nodes.Add(InsertFsi(summary, subFsi, insertSubfolders, false));
                }
            }

            // возвращаем нод
            return aNode;
        }
 public override string ToString() => _fileSystemItem.ToString();