void (@NotNull Project project, @NotNull PsiFile file, @Nullable Editor editor, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { final PsiClass myClass = (PsiClass)startElement; if (!FileModificationService.getInstance().prepareFileForWrite(startElement.getContainingFile())) return; ApplicationManager.getApplication().runWriteAction( () -> invokeImpl(myClass) ); final Editor editor1 = CodeInsightUtil.positionCursorAtLBrace(project, myClass.getContainingFile(), myClass); if (editor1 == null) return; final Collection<CandidateInfo> toImplement = OverrideImplementExploreUtil.getMethodsToOverrideImplement(myClass, true); if (!toImplement.isEmpty()) { if (ApplicationManager.getApplication().isUnitTestMode()) { ApplicationManager.getApplication().runWriteAction( () -> { Collection<PsiMethodMember> members = ContainerUtil.map(toImplement, PsiMethodMember::new); OverrideImplementUtil.overrideOrImplementMethodsInRightPlace(editor1, myClass, members, false); }); } else { //SCR 12599 editor1.getCaretModel().moveToOffset(myClass.getTextRange().getStartOffset()); OverrideImplementUtil.chooseAndImplementMethods(project, editor1, myClass); } } UndoUtil.markPsiFileForUndo(startElement.getContainingFile()); }