Match (PsiForeachPatternStatement statement1, PsiForeachPatternStatement statement2) { final PsiExpression value1 = statement1.getIteratedValue(); final PsiExpression value2 = statement2.getIteratedValue(); if (!expressionsMatch(value1, value2).isExactMatch()) { return EXACT_MISMATCH; } final PsiPattern pattern1 = statement1.getIterationPattern(); final PsiPattern pattern2 = statement2.getIterationPattern(); if (!patternsMatch(pattern1, pattern2).isExactMatch()) { return EXACT_MISMATCH; } final PsiStatement body1 = statement1.getBody(); final PsiStatement body2 = statement2.getBody(); return statementsMatch(body1, body2).partialIfExactMismatch(body1, body2); }