@Override
        public int compare(Tag tag, Tag tag2) {
          if (!TextUtils.equals(tag.getCategory(), tag2.getCategory())) {
            return Config.Tags.CATEGORY_DISPLAY_ORDERS.get(tag.getCategory())
                - Config.Tags.CATEGORY_DISPLAY_ORDERS.get(tag2.getCategory());
          } else if (tag.getOrderInCategory() != tag2.getOrderInCategory()) {
            return tag.getOrderInCategory() - tag2.getOrderInCategory();
          }

          return tag.getName().compareTo(tag2.getName());
        }
 /** Given the set of tags on a session, returns its group label. */
 public Tag getSessionGroupTag(String[] sessionTags) {
   int bestOrder = Integer.MAX_VALUE;
   Tag bestTag = null;
   for (String tagId : sessionTags) {
     Tag tag = getTag(tagId);
     if (tag != null
         && Config.Tags.SESSION_GROUPING_TAG_CATEGORY.equals(tag.getCategory())
         && tag.getOrderInCategory() < bestOrder) {
       bestOrder = tag.getOrderInCategory();
       bestTag = tag;
     }
   }
   return bestTag;
 }