code: @Override
      public int compareTo(Version other) {
  	if (major != other.major) {
  	    return Integer.compare(major, other.major);
  	}
  	if (minor != other.minor) {
  	    return Integer.compare(minor, other.minor);
  	}
  	if (patch != other.patch) {
  	    return Integer.compare(patch, other.patch);
  	}
  	if (preReleaseInformation == null) {
  	    if (other.preReleaseInformation == null) {
  		return 0;
  	    } else {
  		return 1;
  	    }
  	} else {
  	    if (other.preReleaseInformation == null) {
  		return -1;
  	    }
  	    return comparePreReleaseInformation(other);
  	}
      }
docs: <p>
  This method is the implementation of {@link Comparable#compareTo(Object)}
  .
  </p>
  <p>
  <b>Note: this class has a natural ordering that is inconsistent with
  {@link #equals(Object)}.</b> equals checks correctly with build metadata
  information included, but Semantic Versioning does not include this
  metadata for version comparison. For any version comparison, use
  {@link #compareTo(Version)} instead of {@link #equals(Object)}.
  </p>
  
  @param other
  is the other version to compare to this one.
  @return 1 is returned in case this version is greater than the other. -1
  is returned in case this version is smaller and 0 if both are
  equal.