List<TextRange> (@NotNull PsiElement e, @NotNull CharSequence editorText, int cursorOffset, @NotNull Editor editor) { List<TextRange> result = super.select(e, editorText, cursorOffset, editor); if (result == null) { return null; } ASTNode node = BasicJavaAstTreeUtil.toNode(e); if (node == null) { return null; } List<ASTNode> children = BasicJavaAstTreeUtil.getChildren(node); int startOffset = e.getTextRange().getStartOffset(); int endOffset = e.getTextRange().getEndOffset(); for (ASTNode child : children) { if (BasicJavaAstTreeUtil.is(child, JavaDocTokenType.DOC_COMMENT_DATA)) { char[] chars = child.getText().toCharArray(); if (CharArrayUtil.shiftForward(chars, 0, " *\n\t\r") != chars.length) { break; } } startOffset = child.getTextRange().getEndOffset(); } for (ASTNode child : children) { if (BasicJavaAstTreeUtil.is(child, JavaDocTokenType.DOC_COMMENT_DATA)) { char[] chars = child.getText().toCharArray(); if (CharArrayUtil.shiftForward(chars, 0, " *\n\t\r") != chars.length) { endOffset = child.getTextRange().getEndOffset(); } } } startOffset = CharArrayUtil.shiftBackward(editorText, startOffset - 1, "* \t") + 1; result.add(new TextRange(startOffset, endOffset)); return result; }