void (@NotNull GrClosableBlock closure) { super.visitClosure(closure); myHolder.newSilentAnnotation(HighlightSeverity.INFORMATION).range(closure.getLBrace()).textAttributes(GroovySyntaxHighlighter.CLOSURE_ARROW_AND_BRACES).create(); PsiElement rBrace = closure.getRBrace(); if (rBrace != null) { myHolder.newSilentAnnotation(HighlightSeverity.INFORMATION).range(rBrace).textAttributes(GroovySyntaxHighlighter.CLOSURE_ARROW_AND_BRACES).create(); } PsiElement closureArrow = closure.getArrow(); if (closureArrow != null) { myHolder.newSilentAnnotation(HighlightSeverity.INFORMATION).range(closureArrow).textAttributes(GroovySyntaxHighlighter.CLOSURE_ARROW_AND_BRACES).create(); } if (!FunctionalExpressionFlowUtil.isFlatDFAAllowed()) { if (TypeInferenceHelper.isTooComplexTooAnalyze(closure)) { int startOffset = closure.getTextRange().getStartOffset(); int endOffset; PsiElement arrow = closure.getArrow(); if (arrow != null) { endOffset = arrow.getTextRange().getEndOffset(); } else { Document document = PsiDocumentManager.getInstance(closure.getProject()).getDocument(closure.getContainingFile()); if (document == null) return; String text = document.getText(); endOffset = Math.min(closure.getTextRange().getEndOffset(), text.indexOf('\n', startOffset)); } myHolder.newAnnotation(HighlightSeverity.WEAK_WARNING, GroovyBundle.message("closure.is.too.complex.to.analyze")).range(new TextRange(startOffset, endOffset)).create(); } } }