@Override
    public void applyFix(@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());
    }
@Override
    public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor)