code: def merged(self, other):
          
          if self.name_ != other.name_:
              return None  # cannot merge across object names
  
          def _r(r_):
              r = Requirement(None)
              r.name_ = r_.name_
              r.negate_ = r_.negate_
              r.conflict_ = r_.conflict_
              r.sep_ = r_.sep_
              return r
  
          if self.range is None:
              return other
          elif other.range is None:
              return self
          elif self.conflict:
              if other.conflict:
                  r = _r(self)
                  r.range_ = self.range_ | other.range_
                  r.negate_ = (self.negate_ and other.negate_
                               and not r.range_.is_any())
                  return r
              else:
                  range_ = other.range - self.range
                  if range_ is None:
                      return None
                  else:
                      r = _r(other)
                      r.range_ = range_
                      return r
          elif other.conflict:
              range_ = self.range_ - other.range_
              if range_ is None:
                  return None
              else:
                  r = _r(self)
                  r.range_ = range_
                  return r
          else:
              range_ = self.range_ & other.range_
              if range_ is None:
                  return None
              else:
                  r = _r(self)
                  r.range_ = range_
                  return r
docs: Returns the merged result of two requirements.
  
          Two requirements can be in conflict and if so, this function returns
          None. For example, requests for "foo-4" and "foo-6" are in conflict,
          since both cannot be satisfied with a single version of foo.
  
          Some example successful requirements merges are:
          - "foo-3+" and "!foo-5+" == "foo-3+<5"
          - "foo-1" and "foo-1.5" == "foo-1.5"
          - "!foo-2" and "!foo-5" == "!foo-2|5"