boolean (PsiType left) { final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(left); if (interfaceMethod == null) return false; if (getParameterList().getParametersCount() != interfaceMethod.getParameterList().getParametersCount()) { return false; } final PsiType methodReturnType = interfaceMethod.getReturnType(); final PsiElement body = getBody(); if (PsiTypes.voidType().equals(methodReturnType)) { if (body instanceof PsiCodeBlock) { return isVoidCompatible(); } else { return LambdaUtil.isExpressionStatementExpression(body); } } else { return body instanceof PsiCodeBlock && isValueCompatible() || body instanceof PsiExpression; } }