code: static VersionNumber identifyWindowsVersion(final String userAgent) {
  		VersionNumber version = VersionNumber.UNKNOWN;
  		final List<Pattern> patterns = new ArrayList<Pattern>();
  		patterns.add(Pattern.compile("Windows NT\\s?((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Windows Phone OS ((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Windows CE ((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Windows 2000\\s?((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Windows XP\\s?((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Windows 7\\s?((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Win 9x ((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("Windows ((\\d+)((\\.\\d+)+)?)"));
  		patterns.add(Pattern.compile("WebTV/((\\d+)((\\.\\d+)+)?)"));
  		for (final Pattern pattern : patterns) {
  			final Matcher m = pattern.matcher(userAgent);
  			if (m.find()) {
  				version = parseFirstVersionNumber(m.group(MAJOR_INDEX));
  				break;
  			}
  		}
  		return version;
  	}
docs: This method try to determine the version number of the operating system <i>Windows</i> more accurately.
  
  @param userAgent
  user agent string
  @return more accurately identified version number or {@code null}