public IQuickInfoSource TryCreateQuickInfoSource(ITextBuffer textBuffer)
        {
            Contract.Assume(textBuffer != null);

            if (VSServiceProvider.Current == null || VSServiceProvider.Current.ExtensionHasFailed)
            {
                //If the VSServiceProvider is not initialize, we can't do anything.
                return(null);
            }

            return(VSServiceProvider.Current.Logger.PublicEntry <IQuickInfoSource>(() => {
                if (VSServiceProvider.Current.VSOptionsPage != null && !VSServiceProvider.Current.VSOptionsPage.QuickInfo)
                {
                    return null;
                }

                ITextViewTracker textViewTracker;
                if (TextViewTrackerAccessor.TryGetTextViewTracker(textBuffer, out textViewTracker))
                {
                    return VSServiceProvider.Current.GetVersionedServicesFactory().CreateQuickInfoSource(textBuffer, textViewTracker);
                }
                else
                {
                    return null;
                }
            }, "TryCreateQuickInfoSession"));
        }