code: def merge(self, other):
          
          other = self.coerce(other)
          if self.is_equal(other):
              # pick among dependencies
              return self
          elif self.is_contradictory(other):
              raise Contradiction("Cannot merge set with %s" % (str(other)))
          else:
              # self may be a subset of other 
              # or other may be a subset of self
              # merge mutual information
              if self.values:
                  self.values = self.values.union(other.values)
              else:
                  self.values = other.values.copy()
          return self
docs: We can merge unless the merge results in an empty set -- a
          contradiction