void (Project project, Editor editor, PsiFile file) { int offset = editor.getCaretModel().getOffset(); final PsiFile psiFile = InjectedLanguageUtil.findInjectedPsiNoCommit(file, offset); if (psiFile == null) { PsiReference reference = file.findReferenceAt(offset); if (reference == null) return; if (reference.getElement() instanceof PsiLanguageInjectionHost host) { for (LanguageInjectionSupport support : InjectorUtils.getActiveInjectionSupports()) { if (support.isApplicableTo(host) && support.removeInjectionInPlace(host)) { PsiManager.getInstance(project).dropPsiCaches(); return; } } } PsiElement element = reference.getElement(); LanguageInjectionSupport support = element.getUserData(LanguageInjectionSupport.INJECTOR_SUPPORT); if (support != null) { if (support.removeInjection(element)) { PsiManager.getInstance(project).dropPsiCaches(); } } return; } final PsiLanguageInjectionHost host = InjectedLanguageManager.getInstance(project).getInjectionHost(psiFile); if (host == null) return; final LanguageInjectionSupport support = psiFile.getUserData(LanguageInjectionSupport.INJECTOR_SUPPORT); if (support == null) return; try { if (!support.removeInjectionInPlace(host)) { defaultFunctionalityWorked(host); } } finally { FileContentUtil.reparseFiles(project, Collections.emptyList(), true); } }