/// <summary>
        /// Gets a service from the MEF component catalog
        /// </summary>
        public static TInterface GetMefService <TInterface>() where TInterface : class
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            IComponentModel2 compService = GetRequiredService <SComponentModel, IComponentModel2>();

            return(compService.GetService <TInterface>());
        }
        /// <summary>Gets the WPF text view from the currently active document.</summary>
        public async Task <IWpfTextView?> GetCurrentWpfTextViewAsync()
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            IComponentModel2 compService = await VS.GetRequiredServiceAsync <SComponentModel, IComponentModel2>();

            IVsEditorAdaptersFactoryService?editorAdapter = compService.GetService <IVsEditorAdaptersFactoryService>();
            IVsTextView viewAdapter = await GetCurrentNativeTextViewAsync();

            return(editorAdapter?.GetWpfTextView(viewAdapter));
        }
        /// <summary>
        /// Gets a service from the MEF component catalog
        /// </summary>
        public static async Task <TInterface> GetMefServiceAsync <TInterface>() where TInterface : class
        {
            IComponentModel2 compService = await GetRequiredServiceAsync <SComponentModel, IComponentModel2>();

            return(compService.GetService <TInterface>());
        }