PsiReturnStatement (@NotNull PsiCodeBlock block) { PsiStatement lastStatement = ArrayUtil.getLastElement(block.getStatements()); if (lastStatement == null) return null; class Visitor extends JavaRecursiveElementWalkingVisitor { private PsiReturnStatement myReturnStatement; @Override public void visitReturnStatement(@NotNull PsiReturnStatement statement) { super.visitReturnStatement(statement); if (lastStatement != statement) { myReturnStatement = statement; stopWalking(); } } @Override public void visitErrorElement(@NotNull PsiErrorElement element) { stopWalking(); } @Override public void visitExpression(@NotNull PsiExpression expression) {} @Override public void visitLambdaExpression(@NotNull PsiLambdaExpression expression) {} @Override public void visitClass(@NotNull PsiClass aClass) {} } Visitor visitor = new Visitor(); block.accept(visitor); return visitor.myReturnStatement; }