@Override
    boolean isNecessaryCheck(PsiExpression condition, boolean negated) {
      if (condition instanceof PsiBinaryExpression) {
        IElementType tokenType = ((PsiBinaryExpression)condition).getOperationTokenType();
        if (tokenType.equals(JavaTokenType.EQEQ) || tokenType.equals(JavaTokenType.NE)) {
          boolean notNull = negated != tokenType.equals(JavaTokenType.EQEQ);
          ContractReturnValue returnValue = notNull ? ContractReturnValue.returnNotNull() : ContractReturnValue.returnNull();
          PsiExpression left = ((PsiBinaryExpression)condition).getLOperand();
          PsiExpression right = ((PsiBinaryExpression)condition).getROperand();
          if (ExpressionUtils.isNullLiteral(left)) {
            return hasContract(right, myOperand, returnValue);
          }
          if (ExpressionUtils.isNullLiteral(right)) {
            return hasContract(left, myOperand, returnValue);
          }
        }
      }
      return hasContract(condition, myOperand, ContractReturnValue.returnBoolean(negated));
    }
@Override
    boolean isNecessaryCheck(PsiExpression condition, boolean negated)