code: def ranges(self, start=None, stop=None):
  		
  		_check_start_stop(start, stop)
  		start_loc = self._bisect_right(start)
  		if stop is None:
  			stop_loc = len(self._keys)
  		else:
  			stop_loc = self._bisect_left(stop)
  		start_val = self._values[start_loc - 1]
  		candidate_keys = [start] + self._keys[start_loc:stop_loc] + [stop]
  		candidate_values = [start_val] + self._values[start_loc:stop_loc]
  		for i, value in enumerate(candidate_values):
  			if value is not NOT_SET:
  				start_key = candidate_keys[i]
  				stop_key = candidate_keys[i + 1]
  				yield MappedRange(start_key, stop_key, value)
docs: Generate MappedRanges for all mapped ranges.
  
  		Yields:
  			MappedRange