@Override
  public void visitArrayAccessExpression(@NotNull PsiArrayAccessExpression expression) {
    super.visitArrayAccessExpression(expression);
    final PsiExpression indexExpression = expression.getIndexExpression();
    if (indexExpression != null) {
      checkIndexExpression(indexExpression);
    }
    final TypeView typeView = new TypeView(expression.getArrayExpression());
    if (typeView.isChanged() && typeView.getType() instanceof PsiClassType) {
      final TypeConversionDescriptorBase conversion =
        myLabeler.getRules().findConversion(typeView.getTypePair().first, typeView.getType(), null, expression, false, myLabeler);

      if (conversion == null) {
        myLabeler.markFailedConversion(typeView.getType(), expression);
      }
      else {
        myLabeler.setConversionMapping(expression, conversion);
        PsiType type = myTypeEvaluator.evaluateType(expression);
        if (type != null) {
          myTypeEvaluator.setType(new TypeMigrationUsageInfo(expression), type);
        }
      }

    }
  }
@Override
  public void visitArrayAccessExpression(@NotNull PsiArrayAccessExpression expression)