code: function Version(versionStr) {
  
  		var match = rVersion.exec(versionStr) || [];
  
  		function norm(v) {
  			v = parseInt(v);
  			return isNaN(v) ? 0 : v;
  		}
  
  		Object.defineProperty(this, "major", {
  			enumerable: true,
  			value: norm(match[0])
  		});
  		Object.defineProperty(this, "minor", {
  			enumerable: true,
  			value: norm(match[1])
  		});
  		Object.defineProperty(this, "patch", {
  			enumerable: true,
  			value: norm(match[2])
  		});
  		Object.defineProperty(this, "suffix", {
  			enumerable: true,
  			value: String(match[3] || "")
  		});
  
  	}
docs: Creates a Version object from the given version string.
  
  @param {string} versionStr A dot-separated version string
  
  @classdesc Represents a version consisting of major, minor, patch version and suffix,
  e.g. '1.2.7-SNAPSHOT'. All parts after the major version are optional.
  @class