def numeric
      if latest?
        1_000_000_000_000_000_000_000_000_000
      elsif semantic?
        # This assumes each counter will never go > 1000
        if development?
          self =~ /v?(\d+).(\d+).(\d+).(dev|pre)(\d+)/
          (Regexp.last_match[1].to_i * 1000 * 1000 * 1000) +
            (Regexp.last_match[2].to_i * 1000 * 1000) +
            (Regexp.last_match[3].to_i * 1000) +
            Regexp.last_match[5].to_i
        else
          self =~ /v?(\d+).(\d+).(\d+)/
          (Regexp.last_match[1].to_i * 1000 * 1000 * 1000) +
            (Regexp.last_match[2].to_i * 1000 * 1000) +
            (Regexp.last_match[3].to_i * 1000)
        end
      elsif timestamp?
        to_time.to_i
      else
        validate!
      end
    end
def numeric
      if latest?
        1_000_000_000_000_000_000_000_000_000
      elsif semantic?
        # This assumes each counter will never go > 1000
        if development?
          self =~ /v?(\d+).(\d+).(\d+).(dev|pre)(\d+)/
          (Regexp.last_match[1].to_i * 1000 * 1000 * 1000) +
            (Regexp.last_match[2].to_i * 1000 * 1000) +
            (Regexp.last_match[3].to_i * 1000) +
            Regexp.last_match[5].to_i
        else
          self =~ /v?(\d+).(\d+).(\d+)/
          (Regexp.last_match[1].to_i * 1000 * 1000 * 1000) +
            (Regexp.last_match[2].to_i * 1000 * 1000) +
            (Regexp.last_match[3].to_i * 1000)
        end
      elsif timestamp?
        to_time.to_i
      else
        validate!
      end
    end
Returns a numeric representation of the version, this can be used
 for chronological comparison with other versions