code: def choose(self, versions, conflict='silent'):
  		
  		assert conflict in ('silent', 'warning', 'error')
  		if not versions:
  			raise VersionRangeMismatch('No versions to choose from')
  		version_map = {}
  		for version in versions:
  			version_map[version] = str2nr(version, mx=self.limit)
  		top_version, top_nr = None, 0
  		""" Try to find the highest value in range. """
  		for version, nr in version_map.items():
  			if nr >= top_nr:
  				if self.min <= nr <= self.max:
  					top_version, top_nr = version, nr
  		if top_version:
  			return top_version
  		""" We need to look outside the range, so maybe give a warning. """
  		version_problem_notify('No matching version found for range "{0:s}" from options "{1:s}"; other options might be considered.'.format(
  			str(self), '/'.join(str(v) for v in versions)), conflict=conflict)
  		""" Failing the above, try to find the lowest value above the range. """
  		top_nr = self.highest
  		for version, nr in version_map.items():
  			if nr < top_nr:
  				if nr >= self.max:
  					top_version, top_nr = version, nr
  		if top_version:
  			return top_version
  		""" Failing the above two, try to highest value below the range (so just the highest). """
  		top_nr = 0
  		for version, nr in version_map.items():
  			if nr > top_nr:
  				top_version, top_nr = version, nr
  		if top_version:
  			return top_version
docs: Choose the highest version in the range.
  
  		:param versions: Iterable of available versions.