void (@NotNull PsiArrayAccessExpression expr) { if (myExpr.equals(expr.getIndexExpression())) { myResult.add(createInfoImpl(PsiTypes.intType(), PsiTypes.intType())); } else if (myExpr.equals(expr.getArrayExpression())) { if (myForCompletion) { myExpr = (PsiExpression)myExpr.getParent(); expr.getParent().accept(this); return; } PsiElement parent = expr.getParent(); MyParentVisitor visitor = new MyParentVisitor(expr, false, myClassProvider, myVoidable, myUsedAfter, myMaxCandidates); myExpr = (PsiExpression)myExpr.getParent(); parent.accept(visitor); ExpectedTypeInfo[] componentTypeInfo = visitor.getResult(); if (componentTypeInfo.length == 0) { myResult.addAll(anyArrayType()); } else { for (ExpectedTypeInfo compInfo : componentTypeInfo) { PsiType expectedArrayType = compInfo.getType().createArrayType(); myResult.add(createInfoImpl(expectedArrayType, expectedArrayType)); } } } }