public static ImmutableList<NavigationItem> Build(SemanticModelResult semanticModelResult) {

            if (semanticModelResult == null) {
                return ImmutableList<NavigationItem>.Empty;
            }

            return new[] {
                new NavigationItem(
                    displayName: semanticModelResult.Snapshot.TextBuffer.GetContainingProject()?.Name ?? "Miscellaneous Files",
                    imageIndex : NavigationBarImages.Index.ProjectNode)
            }.ToImmutableList();
        }
        public static ImmutableList<NavigationItem> Build(SemanticModelResult semanticModelResult) {

            var codeGenerationUnit = semanticModelResult?.CodeGenerationUnit;
            if(codeGenerationUnit == null) {
                return ImmutableList<NavigationItem>.Empty;
            }

            var builder = new TaskNavigationItemBuilder();

            foreach (var symbol in codeGenerationUnit.TaskDefinitions) {
                builder.Visit(symbol);
            }

            foreach (var symbol in codeGenerationUnit.TaskDeclarations) {
                builder.Visit(symbol);
            }

            var items = builder.NavigationItems
                               .OrderBy(ni => ni.Start)
                               .ToImmutableList();

            return items;
        }