boolean (@NotNull Editor editor, @NotNull PsiFile file, @NotNull MoveInfo info, boolean down) { boolean available = super.checkAvailable(editor, file, info, down); if (!available) return false; LineRange range = expandLineRangeToCoverPsiElements(info.toMove, editor, file); if (range == null) return false; info.toMove = range; int startOffset = editor.logicalPositionToOffset(new LogicalPosition(range.startLine, 0)); int endOffset = editor.logicalPositionToOffset(new LogicalPosition(range.endLine, 0)); PsiElement[] statements = CodeInsightUtil.findStatementsInRange(file, startOffset, endOffset); if (statements.length == 0) return false; range.firstElement = statements[0]; range.lastElement = statements[statements.length - 1]; if (!checkMovingInsideOutside(file, editor, info, down)) { return info.prohibitMove(); } return true; }