void (@NotNull PsiAssignmentExpression assignment) { if (myExpr.equals(assignment.getRExpression())) { PsiExpression lExpr = assignment.getLExpression(); PsiType type = lExpr.getType(); if (type != null) { TailType tailType = getAssignmentRValueTailType(assignment); Supplier<String> expectedName = ExpectedTypeInfoImpl.NULL; if (lExpr instanceof PsiReferenceExpression) { PsiElement refElement = ((PsiReferenceExpression)lExpr).resolve(); if (refElement instanceof PsiVariable) { expectedName = getPropertyName((PsiVariable)refElement); } } myResult.add(createInfoImpl(type, ExpectedTypeInfo.TYPE_OR_SUBTYPE, type, tailType, null, expectedName)); } } else { if (myForCompletion) { myExpr = (PsiExpression)myExpr.getParent(); assignment.getParent().accept(this); return; } PsiExpression rExpr = assignment.getRExpression(); if (rExpr != null) { PsiType type = rExpr.getType(); if (type != null && type != PsiTypes.nullType()) { if (type instanceof PsiClassType) { final PsiClass resolved = ((PsiClassType)type).resolve(); if (resolved instanceof PsiAnonymousClass) { type = ((PsiAnonymousClass)resolved).getBaseClassType(); } } final int kind = assignment.getOperationTokenType() != JavaTokenType.EQ ? ExpectedTypeInfo.TYPE_STRICTLY : ExpectedTypeInfo.TYPE_OR_SUPERTYPE; myResult.add(createInfoImpl(type, kind, type, TailTypes.noneType())); } } } }