void (final Project project, final Editor editor, PsiClass aClass, ClassMember[] members) { int offset = editor.getCaretModel().getOffset(); int col = editor.getCaretModel().getLogicalPosition().column; int line = editor.getCaretModel().getLogicalPosition().line; final Document document = editor.getDocument(); int lineStartOffset = document.getLineStartOffset(line); CharSequence docText = document.getCharsSequence(); String textBeforeCaret = docText.subSequence(lineStartOffset, offset).toString(); final String afterCaret = docText.subSequence(offset, document.getLineEndOffset(line)).toString(); final PsiElement lBrace = aClass.getLBrace(); if (textBeforeCaret.trim().length() > 0 && StringUtil.isEmptyOrSpaces(afterCaret) && (lBrace == null || lBrace.getTextOffset() < offset) && !editor.getSelectionModel().hasSelection()) { PsiDocumentManager.getInstance(project).commitDocument(document); offset = editor.getCaretModel().getOffset(); col = editor.getCaretModel().getLogicalPosition().column; line = editor.getCaretModel().getLogicalPosition().line; } editor.getCaretModel().moveToLogicalPosition(new LogicalPosition(0, 0)); int finalOffset = offset; List<? extends GenerationInfo> newMembers = WriteAction.compute( () -> GenerateMembersUtil.insertMembersAtOffset(aClass, finalOffset, generateMemberPrototypes(aClass, members))); editor.getCaretModel().moveToLogicalPosition(new LogicalPosition(line, col)); if (newMembers.isEmpty()) { if (!ApplicationManager.getApplication().isUnitTestMode()) { HintManager.getInstance().showErrorHint(editor, getNothingFoundMessage()); } return; } else { final List<PsiElement> elements = new ArrayList<>(); for (GenerationInfo member : newMembers) { if (!(member instanceof TemplateGenerationInfo)) { ContainerUtil.addIfNotNull(elements, member.getPsiMember()); } } GlobalInspectionContextBase.cleanupElements(project, null, elements.toArray(PsiElement.EMPTY_ARRAY)); } final ArrayList<TemplateGenerationInfo> templates = new ArrayList<>(); for (GenerationInfo member : newMembers) { if (member instanceof TemplateGenerationInfo) { templates.add((TemplateGenerationInfo) member); } } if (!templates.isEmpty()){ runTemplates(project, editor, templates, 0); } else if (!newMembers.isEmpty()){ notifyOnSuccess(editor, members, newMembers); } }