public UIElement?GetUIElement(Completion itemToRender, ICompletionSession context, UIElementType elementType)
        {
            if (elementType != UIElementType.Tooltip)
            {
                return(null);
            }

            if (lastAsyncToolTipContentWeakReference?.Target is AsyncToolTipContent lastAsyncToolTipContent && lastAsyncToolTipContent.Session == context)
            {
                lastAsyncToolTipContent.Cancel();
                lastAsyncToolTipContentWeakReference = null;
            }

            var roslynCompletion = itemToRender as RoslynCompletion;

            if (roslynCompletion is null)
            {
                return(null);
            }
            var roslynCollection = context.SelectedCompletionSet as RoslynCompletionSet;

            Debug.Assert(!(roslynCollection is null));
            if (roslynCollection is null)
            {
                return(null);
            }

            const bool colorize = true;
            var        result   = new AsyncToolTipContent(this, roslynCollection, roslynCompletion, context, taggedTextElementProviderService, colorize);

            lastAsyncToolTipContentWeakReference = result.IsDisposed ? null : new WeakReference(result);
            return(result);
        }
        public UIElement GetUIElement(Completion itemToRender, ICompletionSession context, UIElementType elementType)
        {
            if (elementType != UIElementType.Tooltip)
            {
                return(null);
            }

            var lastAsyncToolTipContent = lastAsyncToolTipContentWeakReference?.Target as AsyncToolTipContent;

            if (lastAsyncToolTipContent?.Session == context)
            {
                lastAsyncToolTipContent.Cancel();
                lastAsyncToolTipContentWeakReference = null;
            }

            var roslynCompletion = itemToRender as RoslynCompletion;

            if (roslynCompletion == null)
            {
                return(null);
            }
            var roslynCollection = context.SelectedCompletionCollection as RoslynCompletionCollection;

            Debug.Assert(roslynCollection != null);
            if (roslynCollection == null)
            {
                return(null);
            }

            var result = new AsyncToolTipContent(this, roslynCollection, roslynCompletion, context, taggedTextElementProviderService, themeClassificationTypeService);

            lastAsyncToolTipContentWeakReference = result.IsDisposed ? null : new WeakReference(result);
            return(result);
        }