private void FillNodes(Hierarchy <CodeNode> source, TreeNodeCollection dest, int level, IList <CodeNode> functions) { if (!source.HasChildren) { return; } var isSort = Settings.SortingEnabled; var childrens = source.Children; if (isSort) { childrens.Sort((a1, a2) => string.Compare(a1.Item.Alias, a2.Item.Alias)); } foreach (var item in childrens) { CodeNode node = item.Item; if (node.StartLine > _lastCodeLine) { _lastCodeLine = node.StartLine; } CustomTreeNode treeNode = new CustomTreeNode(node.Alias); treeNode.CodeNode = node; treeNode.ToolTipText = CommentTipFormatter.FormatPlainTextComment(node.Comment); treeNode.StateImageIndex = GetImageIndex(node.NodeType); _sourceFileSpecificSettingsManager.RestoreMark(treeNode); dest.Add(treeNode); functions.Add(node); if (item.HasChildren) { FillNodes(item, treeNode.Nodes, level + 1, functions); } var isExpanded = _expandedNodesManager.IsNoteExpanded(treeNode); if (isExpanded.HasValue) { if (isExpanded.Value) { treeNode.Expand(); } } else { if (Settings.AutoExpandAll) { treeNode.Expand(); } } } }