List<MethodContract> (PsiMethodCallExpression call) { PsiExpression qualifier = call == null ? null : call.getMethodExpression().getQualifierExpression(); if (qualifier != null) { PsiType type = qualifier.getType(); if (type != null && (knownAsEqualByReference(type) || TypeConstraints.exact(type).isComparedByEquals())) { return Arrays.asList( singleConditionContract(ContractValue.qualifier(), RelationType.EQ, ContractValue.argument(0), returnTrue()), trivialContract(returnFalse()) ); } } return Arrays.asList(new StandardMethodContract(new StandardMethodContract.ValueConstraint[]{NULL_VALUE}, returnFalse()), singleConditionContract(ContractValue.qualifier(), RelationType.EQ, ContractValue.argument(0), returnTrue())); }