void (@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); } } } }