Match (@NotNull PsiConditionalLoopStatement statement1, @NotNull PsiConditionalLoopStatement statement2) { if (statement1 instanceof PsiForStatement) { final PsiStatement initialization1 = ((PsiForStatement)statement1).getInitialization(); final PsiStatement initialization2 = ((PsiForStatement)statement2).getInitialization(); if (!statementsMatch(initialization1, initialization2).isExactMatch()) { return EXACT_MISMATCH; } final PsiStatement update1 = ((PsiForStatement)statement1).getUpdate(); final PsiStatement update2 = ((PsiForStatement)statement2).getUpdate(); if (!statementsMatch(update1, update2).isExactMatch()) { return EXACT_MISMATCH; } } final PsiExpression condition1 = statement1.getCondition(); final PsiExpression condition2 = statement2.getCondition(); final PsiStatement body1 = statement1.getBody(); final PsiStatement body2 = statement2.getBody(); final Match conditionEquivalence = expressionsMatch(condition1, condition2); final Match bodyEquivalence = statementsMatch(body1, body2); return getComplexElementDecision(bodyEquivalence, conditionEquivalence, body1, body2, condition1, condition2); }