public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
        {
            TrackingSession session = _session;
            if (session == null)
            {
                span = default(TextSpan);
                return false;
            }

            return session.TryGetSpan(id, source, out span);
        }
            public bool TryGetSpan(ActiveStatementId id, SourceText source, out TextSpan span)
            {
                ITrackingSpan[] documentSpans;

                lock (_trackingSpans)
                {
                    if (_trackingSpans.TryGetValue(id.DocumentId, out documentSpans) && documentSpans != null)
                    {
                        var trackingSpan = documentSpans[id.Ordinal];
                        var snapshot = source.FindCorrespondingEditorTextSnapshot();

                        if (snapshot != null && snapshot.TextBuffer == trackingSpan.TextBuffer)
                        {
                            span = trackingSpan.GetSpan(snapshot).Span.ToTextSpan();
                            return true;
                        }
                    }
                }

                span = default(TextSpan);
                return false;
            }