class SemanticVersion implements Comparable<SemanticVersion> {

  @Override
  public int compareTo(@NotNull SemanticVersion o) {
    if (o == null) {
      return 1;
    }
    int majorDiff = this.major - o.major;
    if (majorDiff != 0) {
      return majorDiff;
    }
    int minorDiff = this.minor - o.minor;
    if (minorDiff != 0) {
      return minorDiff;
    }
    return this.revision - o.revision;
  }

  public  SemanticVersion(int major, int minor);
  public  SemanticVersion(int major, int minor, int revision);
  public  SemanticVersion(String fullVersion);

}