@Override
    public void visitForeachStatement(@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);
      }
    }
@Override
    public void visitForeachStatement(@NotNull PsiForeachStatement statement)