boolean (@NotNull Editor editor, @Nullable PsiElement codeBlock, @Nullable ASTNode element) { PsiWhiteSpace whiteSpace = null; if (codeBlock == null) { PsiElement psiElement = BasicJavaAstTreeUtil.toPsi(element); if (psiElement != null && !(BasicJavaAstTreeUtil.is(element, MEMBER_SET))) { final PsiElement next = PsiTreeUtil.nextLeaf(psiElement); if (next instanceof PsiWhiteSpace) { whiteSpace = (PsiWhiteSpace)next; } } } else { whiteSpace = PsiTreeUtil.findChildOfType(codeBlock, PsiWhiteSpace.class); if (whiteSpace == null) { return false; } PsiElement lbraceCandidate = whiteSpace.getPrevSibling(); if (lbraceCandidate == null) { return false; } ASTNode node = lbraceCandidate.getNode(); if (node == null || node.getElementType() != JavaTokenType.LBRACE) { return false; } } if (whiteSpace == null) { return false; } final TextRange textRange = whiteSpace.getTextRange(); final Document document = editor.getDocument(); final CharSequence whiteSpaceText = document.getCharsSequence().subSequence(textRange.getStartOffset(), textRange.getEndOffset()); if (StringUtil.countNewLines(whiteSpaceText) < 2) { return false; } int i = CharArrayUtil.shiftForward(whiteSpaceText, 0, " \t"); if (i >= whiteSpaceText.length() - 1) { assert false : String.format("code block: %s, white space: %s", codeBlock == null ? "undefined" : codeBlock.getTextRange(), whiteSpace.getTextRange()); return false; } editor.getCaretModel().moveToOffset(i + 1 + textRange.getStartOffset()); EditorActionManager actionManager = EditorActionManager.getInstance(); EditorActionHandler actionHandler = actionManager.getActionHandler(IdeActions.ACTION_EDITOR_MOVE_LINE_END); final DataContext dataContext = DataManager.getInstance().getDataContext(editor.getComponent()); actionHandler.execute(editor, editor.getCaretModel().getCurrentCaret(), dataContext); return true; }