def reverse_merge(u2)
			# return self unless uri.scheme
			u2 = u2.clone
			u2 = self.class.new(u2) unless u2.is_a?(self.class)
			if opaque.nil? == u2.opaque.nil?
				u2.soft_merge(self)
			else
				self
			end
		end
def reverse_merge(u2)
			# return self unless uri.scheme
			u2 = u2.clone
			u2 = self.class.new(u2) unless u2.is_a?(self.class)
			if opaque.nil? == u2.opaque.nil?
				u2.soft_merge(self)
			else
				self
			end
		end
uri=u2.merge(uri) does not work if uri is absolute