code: def merge(self, other):
          
          if not isinstance(other, DictCell):
              raise Exception("Incomparable")
          if self.is_equal(other):
              # pick among dependencies
              return self
          elif other.is_entailed_by(self):
              return self
          elif self.is_entailed_by(other):
              self.__dict__['p'] = other.__dict__['p'].copy()
          elif not self.is_contradictory(other):
              # partial information in both, add from other
              for o_key, o_val in other:
                  if not o_key in self.__dict__['p']:
                      self.__dict__['p'][o_key] = o_val
                  else:
                      self.__dict__['p'][o_key].merge(o_val)
          else:
              raise Contradiction("Dictionaries are contractory, cannot Merge")
          return self
docs: Merges two complex structures (by recursively merging their parts).
          Missing-parts do not trigger contradictions.