public async Task NavigateToItemAsync(Document document, NavigationBarItem item, ITextView view, CancellationToken cancellationToken)
        {
            if (item.Spans.Length <= 0)
            {
                return;
            }

            await _threadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            var workspace         = document.Project.Solution.Workspace;
            var navigationService = VSTypeScriptDocumentNavigationServiceWrapper.Create(workspace);

            navigationService.TryNavigateToPosition(workspace, document.Id, item.Spans[0].Start, virtualSpace: 0, options: null, cancellationToken: cancellationToken);
        }
        public async Task <bool> TryNavigateToItemAsync(
            Document document, NavigationBarItem item, ITextView view, ITextSnapshot textSnapshot, CancellationToken cancellationToken)
        {
            if (item.NavigationTrackingSpan != null)
            {
                var span = item.NavigationTrackingSpan.GetSpan(textSnapshot);
                await _threadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

                var workspace         = document.Project.Solution.Workspace;
                var navigationService = VSTypeScriptDocumentNavigationServiceWrapper.Create(workspace);
                navigationService.TryNavigateToPosition(workspace, document.Id, span.Start, virtualSpace: 0, options: null, cancellationToken: cancellationToken);
            }

            return(true);
        }
        public async Task <bool> TryNavigateToItemAsync(
            Document document, NavigationBarItem item, ITextView view, ITextVersion textVersion, CancellationToken cancellationToken)
        {
            // Spans.First() is safe here as we filtered out any items with no spans above in ConvertItems.
            var navigationSpan = item.GetCurrentItemSpan(textVersion, item.Spans.First());
            await _threadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            var workspace         = document.Project.Solution.Workspace;
            var navigationService = VSTypeScriptDocumentNavigationServiceWrapper.Create(workspace);

            navigationService.TryNavigateToPosition(
                workspace, document.Id, navigationSpan.Start,
                virtualSpace: 0, options: null, cancellationToken: cancellationToken);

            return(true);
        }