boolean (@NotNull GrClosableBlock body,@NotNull GrStatement statement) { GroovyPsiElement statementToCheck = statement; while (true) { if (!(statementToCheck instanceof GrExpression || statementToCheck instanceof GrReturnStatement)) { return false; } final GroovyPsiElement container = getContainingStatementOrBlock(statementToCheck); if (container == null) { return false; } if (isLoop(container)) { return false; } if (container instanceof GrCodeBlock) { if (!statementIsLastInBlock((GrCodeBlock)container, (GrStatement)statementToCheck)) { return false; } if (container.equals(body)) { return true; } statementToCheck = PsiTreeUtil.getParentOfType(container, GrStatement.class); } else { statementToCheck = container; } } }