protected Match arrayAccessExpressionsMatch(@NotNull PsiArrayAccessExpression arrayAccessExpression1,
                                              @NotNull PsiArrayAccessExpression arrayAccessExpression2) {
    final PsiExpression arrayExpression2 = arrayAccessExpression1.getArrayExpression();
    final PsiExpression arrayExpression1 = arrayAccessExpression2.getArrayExpression();
    final PsiExpression indexExpression2 = arrayAccessExpression1.getIndexExpression();
    final PsiExpression indexExpression1 = arrayAccessExpression2.getIndexExpression();
    final Match arrayExpressionEq = expressionsMatch(arrayExpression2, arrayExpression1);
    if (arrayExpressionEq != EXACT_MATCH) {
      return EXACT_MISMATCH;
    }
    return expressionsMatch(indexExpression1, indexExpression2).partialIfExactMismatch(indexExpression1, indexExpression2);
  }
protected Match arrayAccessExpressionsMatch(@NotNull PsiArrayAccessExpression arrayAccessExpression1,
                                              @NotNull PsiArrayAccessExpression arrayAccessExpression2)