code: public static Os parse(String agentString) {
      if (Strings.isEmpty(agentString)) { return Os.UNKNOWN; }
      for (OsCategory category : OsCategory.values()) {
        String version = category.match(agentString);
        if (version != null) {
          String key = category.getName() + "/" + version;
          Os os = osMap.get(key);
          if (null == os) {
            os = new Os(category, version);
            osMap.put(key, os);
          }
          return os;
        }
      }
      return Os.UNKNOWN;
    }
docs: Parses user agent string and returns the best match. Returns Os.UNKNOWN
  if there is no match.
  
  @param agentString
  @return Os