code: @Override
    public int compareTo(IVersion other)
    {
      if (other instanceof SemanticVersion) {
        SemanticVersion sv = (SemanticVersion) other;
        // If neither is named, then compare them as semantic values
        return this.head.compareTo(sv.head);
      }
      else {
        // Fall back to simple string comparison
        return toString().compareTo(other.toString());
      }
    }
docs: /*
  (non-Javadoc)
  @see java.lang.Comparable#compareTo(java.lang.Object)