boolean (PsiElement referenceElement, PsiAssignmentExpression assignmentExpression, boolean useRighthandTypeAsWeakestTypeInAssignments, Set<PsiClass> weakestTypeClasses) { final IElementType tokenType = assignmentExpression.getOperationTokenType(); if (JavaTokenType.EQ != tokenType) { return false; } final PsiExpression lhs = assignmentExpression.getLExpression(); final PsiExpression rhs = assignmentExpression.getRExpression(); if (rhs == null) { return false; } final PsiType lhsType = lhs.getType(); final PsiType rhsType = rhs.getType(); if (lhsType == null || rhsType == null || !lhsType.isAssignableFrom(rhsType)) { return false; } if (referenceElement.equals(rhs)) { return checkType(lhsType, weakestTypeClasses); } return !useRighthandTypeAsWeakestTypeInAssignments || rhs instanceof PsiNewExpression && rhs instanceof PsiTypeCastExpression || !lhsType.equals(rhsType); }