@Override
  public void invoke(final @NotNull Project project, final @NotNull Editor editor, final @NotNull PsiFile file) {
    PsiClass aClass = OverrideImplementUtil.getContextClass(project, editor, file, PsiUtil.isAvailable(JavaFeature.EXTENSION_METHODS, file));
    if (aClass == null) {
      return;
    }
    ReadAction.nonBlocking(() -> {
        return DumbService.getInstance(project).computeWithAlternativeResolveEnabled(
          () -> OverrideImplementExploreUtil.getMethodSignaturesToImplement(aClass).isEmpty());
      })
      .finishOnUiThread(ModalityState.defaultModalityState(), empty -> {
        if (empty) {
          HintManager.getInstance().showErrorHint(editor, JavaBundle.message("implement.method.no.methods.to.implement"));
        }
        else {
          OverrideImplementUtil.chooseAndImplementMethods(project, editor, aClass);
        }
      })
      .expireWhen(() -> !aClass.isValid())
      .submit(AppExecutorUtil.getAppExecutorService());
  }
@Override
  public void invoke(final @NotNull Project project, final @NotNull Editor editor, final @NotNull PsiFile file)