boolean (GrMethodCallExpression call) { final GroovyResolveResult result = call.advancedResolve(); final PsiElement element = result.getElement(); if (element == null) return false; if (element instanceof PsiMethod) { final GrExpression expression = call.getInvokedExpression(); if (expression instanceof GrReferenceExpression) { final GroovyMethodCallReference reference = call.getImplicitCallReference(); if (reference != null) { Argument receiver = reference.getReceiverArgument(); PsiType receiverType = receiver == null ? null : receiver.getType(); if (receiverType instanceof GroovyClosureType) { return isRawClosureCall(call, result, (GroovyClosureType)receiverType); } } } PsiType returnType = getSmartReturnType((PsiMethod)element); if (expression instanceof GrReferenceExpression && result.isInvokedOnProperty()) { if (returnType instanceof GroovyClosureType) { return isRawClosureCall(call, result, (GroovyClosureType)returnType); } } else { return isRawType(returnType, result.getSubstitutor()); } } if (element instanceof PsiVariable) { GrExpression expression = call.getInvokedExpression(); final PsiType type = expression.getType(); if (type instanceof GroovyClosureType) { return isRawClosureCall(call, result, (GroovyClosureType)type); } } return false; }