def METHOD_NAME(self):
    # not equals is a tricky constraint to linearize, do some extra tests on it here
    x, y, z = [cp.intvar(0, 5, name=n) for n in "xyz"]
    a, b, c = [cp.boolvar(name=n) for n in "abc"]
    cons = 2*x + 3*y + 4*z != 10
    self.assertEqual(str(linearize_constraint(cons)),"[(BV3) -> (sum([2, 3, 4] * [x, y, z]) <= 9), (~BV3) -> (sum([2, 3, 4] * [x, y, z]) >= 11)]")
    cons = a.implies(x != y)
    lin_cons = linearize_constraint(cons)
    cons_vals = []
    cp.Model(lin_cons).solveAll(solver="ortools", display=lambda : cons_vals.append(cons.value()))
    print(len(cons_vals))
    self.assertTrue(all(cons_vals))
    # self.assertEqual(str(linearize_constraint(cons)), "[(a) -> (sum([1, -1, -6] * [x, y, BV4]) <= -1), (a) -> (sum([1, -1, -6] * [x, y, BV4]) >= -5)]")