Match (Match equivalence1, Match equivalence2, PsiElement left1, PsiElement right1, PsiElement left2, PsiElement right2) { if (equivalence2 == EXACT_MATCH) { if (equivalence1 == EXACT_MATCH) { return EXACT_MATCH; } else if (equivalence1 == EXACT_MISMATCH) { return new Match(left1, right1); } else { return equivalence1; } } else if (equivalence2 == EXACT_MISMATCH) { if (equivalence1 == EXACT_MISMATCH) { return EXACT_MISMATCH; } else if (equivalence1 == EXACT_MATCH) { return new Match(left2, right2); } } return equivalence1 == EXACT_MATCH ? equivalence2 : EXACT_MISMATCH; }