code: public static Version valueOf(String versionString)
  	    throws IllegalArgumentException {
  	Matcher matcher = versionPattern.matcher(versionString);
  	if (!matcher.matches()) {
  	    throw new IllegalArgumentException(
  		    "The version string must match the pattern '"
  			    + versionRegExp + "'.");
  	}
  	int majorVersion = Integer.parseInt(matcher.group(1));
  	int minorVersion = Integer.parseInt(matcher.group(2));
  	int patchVersion = Integer.parseInt(matcher.group(3));
  	String preReleaseInformation = matcher.group(5);
  	String buildMetadata = matcher.group(12);
  	return new Version(majorVersion, minorVersion, patchVersion,
  		preReleaseInformation, buildMetadata);
      }
docs: This method converts a version string into a {@link Version} object.
  
  @param versionString
  is a {@link String} containing the version string to be
  converted.
  @return A {@link Version} object is returned.
  @throws IllegalArgumentException
  is thrown in case the version string is not valid. The
  message of the exception tells the exact issue.