List<TempPlace> () { long modificationCount = PsiModificationTracker.getInstance(myProject).getModificationCount(); if (myPsiModificationCounter == modificationCount) { return myTempPlaces; } myPsiModificationCounter = modificationCount; final List<TempPlace> placesToRemove = ContainerUtil.findAll(myTempPlaces, place -> { PsiLanguageInjectionHost element = place.elementPointer.getElement(); if (element == null) { Segment range = place.elementPointer.getRange(); if (range == null) return true; PsiFile file = place.elementPointer.getContainingFile(); if (file == null) return true; PsiLanguageInjectionHost newHost = CommonInjectedFileChangesHandlerKt.getInjectionHostAtRange(file, range); if (newHost == null) return true; newHost.putUserData(LanguageInjectionSupport.TEMPORARY_INJECTED_LANGUAGE, place.language); place.elementPointer = SmartPointerManager.createPointer(newHost); } else if (!element.isValidHost()) { element.putUserData(LanguageInjectionSupport.TEMPORARY_INJECTED_LANGUAGE, null); return true; } else { element.putUserData(LanguageInjectionSupport.TEMPORARY_INJECTED_LANGUAGE, place.language); } return false; }); if (!placesToRemove.isEmpty()) { myTempPlaces.removeAll(placesToRemove); } return myTempPlaces; }