'Modify self to match all the constraints for other if both
instances are multi-valued. Returns True if self changed,
False otherwise.
Args:
other: instance against which we constrain self
Returns:
bool: True or False'

@implicit_variant_conversion
def constrain(self, other):

    if (self.name != other.name):
        raise ValueError('variants    must    have    the    same    name')
    old_value = self.value
    self.value = ','.join(sorted(set((self.value + other.value))))
    return (old_value != self.value)
