SimplifyForEachContext (@Nullable PsiElement context) { if (!(context instanceof PsiReferenceExpression) || !PsiUtil.isAccessedForWriting((PsiExpression)context)) return null; PsiLambdaExpression lambda = PsiTreeUtil.getParentOfType(context, PsiLambdaExpression.class); if (lambda == null) return null; PsiElement lambdaBody = lambda.getBody(); if (lambdaBody == null) return null; PsiExpressionList parameters = tryCast(PsiUtil.skipParenthesizedExprUp(lambda.getParent()), PsiExpressionList.class); if (parameters == null || parameters.getExpressionCount() != 1) return null; PsiMethodCallExpression call = tryCast(parameters.getParent(), PsiMethodCallExpression.class); SimplifyForEachContext simplifyForEachContext = SimplifyForEachContext.from(call); if (simplifyForEachContext == null || simplifyForEachContext.myMigration instanceof ForEachMigration) return null; return simplifyForEachContext; }