void (@NotNull PsiForeachStatement statement) { super.visitForeachStatement(statement); final PsiExpression iteratedValue = PsiUtil.skipParenthesizedExprDown(statement.getIteratedValue()); final PsiExpression iteratedExpression = getIteratedExpression(iteratedValue); if (iteratedExpression == null) return; PsiParameter parameter = statement.getIterationParameter(); PsiElement context = statement.getBody(); if (context == null) return; PsiReferenceExpression mapExpression = getMapReferenceFromKeySetCall(iteratedExpression); if (mapExpression == null) return; final GetValueFromMapChecker checker = new GetValueFromMapChecker(mapExpression, parameter); context.accept(checker); if (checker.isGetValueFromMap()) { registerError(iteratedValue, checker.isKeyUsedExplicitly() ? ReplacementMode.ENTRY_SET : ReplacementMode.VALUES); } }