def METHOD_NAME(self):
    ivs = [intvar(1, 9, name=n) for n in "xyz"]
    bv = boolvar(name="bv")
    cons = [AllDifferent(ivs)]
    self.assertEqual(str(decompose_in_tree(cons)), "[(x) != (y), (x) != (z), (y) != (z)]")
    self.assertEqual(str(decompose_in_tree(cons, supported={"alldifferent"})), str(cons))
    # reified
    cons = [bv.implies(AllDifferent(ivs))]
    self.assertEqual(str(decompose_in_tree(cons)),
                     "[(bv) -> (and([(x) != (y), (x) != (z), (y) != (z)]))]")
    self.assertEqual(str(decompose_in_tree(cons, supported={"alldifferent"})),
                     "[(bv) -> (and([(x) != (y), (x) != (z), (y) != (z)]))]")
    self.assertEqual(str(decompose_in_tree(cons, supported={"alldifferent"}, supported_reified={"alldifferent"})),str(cons))
    cons = [AllDifferent(ivs).implies(bv)]
    self.assertEqual(str(decompose_in_tree(cons)),
                     "[(and([(x) != (y), (x) != (z), (y) != (z)])) -> (bv)]")
    self.assertEqual(str(decompose_in_tree(cons, supported={"alldifferent"})),
                     "[(and([(x) != (y), (x) != (z), (y) != (z)])) -> (bv)]")
    self.assertEqual(str(decompose_in_tree(cons, supported={"alldifferent"}, supported_reified={"alldifferent"})),
                     str(cons))
    cons = [AllDifferent(ivs) == (bv)]
    self.assertEqual(str(decompose_in_tree(cons)),
                     "[(and([(x) != (y), (x) != (z), (y) != (z)])) == (bv)]")
    self.assertEqual(str(decompose_in_tree(cons, supported={"alldifferent"})),
                     "[(and([(x) != (y), (x) != (z), (y) != (z)])) == (bv)]")
    self.assertEqual(str(decompose_in_tree(cons, supported_reified={"alldifferent"})),
                     str(cons))
    # tricky one
    cons = [AllDifferent(ivs) < (bv)]
    self.assertEqual(str(decompose_in_tree(cons)),
                     "[(and([(x) != (y), (x) != (z), (y) != (z)])) < (bv)]")