void (@NotNull Project project, @NotNull ProblemDescriptor descriptor) { final PsiElement psiElement = descriptor.getPsiElement(); PsiMethod method = PsiTreeUtil.getParentOfType(psiElement, PsiMethod.class); if (method == null) return; final List<PsiMethod> toAnnotate = new ArrayList<>(); if (!AnnotateOverriddenMethodParameterFix.processModifiableInheritorsUnderProgress(method, (Consumer<? super PsiMethod>)psiMethod -> { if (AnnotationUtil.isAnnotatingApplicable(psiMethod, myAnnotation) && !AnnotationUtil.isAnnotated(psiMethod, myAnnotation, CHECK_EXTERNAL | CHECK_TYPE)) { toAnnotate.add(psiMethod); } })) { return; } FileModificationService.getInstance().preparePsiElementsForWrite(toAnnotate); for (PsiMethod psiMethod : toAnnotate) { AddAnnotationPsiFix fix = new AddAnnotationPsiFix(myAnnotation, psiMethod, myAnnotationsToRemove); fix.invoke(psiMethod.getProject(), psiMethod.getContainingFile(), psiMethod, psiMethod); } UndoUtil.markPsiFileForUndo(method.getContainingFile()); }