Match (@NotNull PsiForeachStatement statement1, @NotNull PsiForeachStatement statement2) { final PsiExpression value1 = statement1.getIteratedValue(); final PsiExpression value2 = statement2.getIteratedValue(); if (!expressionsMatch(value1, value2).isExactMatch()) { return EXACT_MISMATCH; } final PsiParameter parameter1 = statement1.getIterationParameter(); final PsiParameter parameter2 = statement2.getIterationParameter(); if (!variableSignatureMatch(parameter1, parameter2)) { return EXACT_MISMATCH; } final PsiStatement body1 = statement1.getBody(); final PsiStatement body2 = statement2.getBody(); return statementsMatch(body1, body2).partialIfExactMismatch(body1, body2); }