class Version implements Comparable<Version> {

  @Override
  public int compareTo(Version o) {
    Preconditions.checkNotNull(o);
    return ComparisonChain.start()
        .compare(this.major, o.major)
        .compare(this.minor, o.minor)
        .compare(this.patch, o.patch)
        .compare(this.buildNumber, o.buildNumber)
        .compare(this.lcQualifier, o.lcQualifier, QUALIFIER_COMPARATOR)
        .result();
  }

  public  Version(String version, int major, int minor, int patch, int buildNumber,
      String qualifier);

}