void (@NotNull PsiForeachStatement statement) { CodeFragmentEvaluator oldFragmentEvaluator = setNewCodeFragmentEvaluator(); try { PsiParameter parameter = statement.getIterationParameter(); String iterationParameterName = parameter.getName(); myCurrentFragmentEvaluator.setInitialValue(iterationParameterName, null); SyntheticVariableEvaluator iterationParameterEvaluator = new SyntheticVariableEvaluator(myCurrentFragmentEvaluator, iterationParameterName, null); Evaluator iteratedValueEvaluator = accept(statement.getIteratedValue()); Evaluator bodyEvaluator = accept(statement.getBody()); if (bodyEvaluator != null) { myResult = new ForeachStatementEvaluator(iterationParameterEvaluator, iteratedValueEvaluator, bodyEvaluator, getLabel(statement)); } } finally { myCurrentFragmentEvaluator = oldFragmentEvaluator; } }