void (@NotNull Project project, @NotNull DocumentWindow documentWindow) { if (project.isDisposed()) return; VirtualFileWindowImpl virtualFile = (VirtualFileWindowImpl)Objects.requireNonNull(FileDocumentManager.getInstance().getFile(documentWindow)); PsiManagerEx psiManagerEx = PsiManagerEx.getInstanceEx(project); DebugUtil.performPsiModification("injected clearCaches", () -> psiManagerEx.getFileManager().setViewProvider(virtualFile, null)); VirtualFile delegate = virtualFile.getDelegate(); if (!delegate.isValid()) return; FileViewProvider viewProvider = psiManagerEx.getFileManager().findCachedViewProvider(delegate); if (viewProvider == null) return; for (PsiFile hostFile : ((AbstractFileViewProvider)viewProvider).getCachedPsiFiles()) { // modification of cachedInjectedDocuments must be under InjectedLanguageManagerImpl.ourInjectionPsiLock synchronized (InjectedLanguageManagerImpl.ourInjectionPsiLock) { List<DocumentWindow> cachedInjectedDocuments = getCachedInjectedDocuments(hostFile); for (int i = cachedInjectedDocuments.size() - 1; i >= 0; i--) { DocumentWindow cachedInjectedDocument = cachedInjectedDocuments.get(i); if (cachedInjectedDocument == documentWindow) { cachedInjectedDocuments.remove(i); } } } } }