void (@NotNull PsiLambdaExpression lambda) { super.visitLambdaExpression(lambda); PsiElement body = lambda.getBody(); if (body == null) return; PsiType type = lambda.getFunctionalInterfaceType(); if (!(type instanceof PsiClassType)) return; PsiElement parent = PsiUtil.skipParenthesizedExprUp(lambda.getParent()); if(parent instanceof PsiTypeCastExpression && InheritanceUtil.isInheritor(((PsiTypeCastExpression)parent).getType(), CommonClassNames.JAVA_IO_SERIALIZABLE)) return; PsiExpression expression = PsiUtil.skipParenthesizedExprDown(LambdaUtil.extractSingleExpressionFromBody(body)); if (expression == null) return; PsiParameter[] parameters = lambda.getParameterList().getParameters(); if (parameters.length == 1) { PsiParameter parameter = parameters[0]; if (ExpressionUtils.isReferenceTo(expression, parameter)) { handleFunctionIdentity(lambda, (PsiClassType)type); } if (expression instanceof PsiMethodCallExpression call) { PsiClass aClass = ((PsiClassType)type).resolve(); if (aClass != null && CommonClassNames.JAVA_UTIL_FUNCTION_PREDICATE.equals(aClass.getQualifiedName())) { handlePredicateIsEqual(lambda, parameter, call); handlePatternAsPredicate(lambda, parameter, call); } } handlePatternNegate(lambda, parameter, expression); } }