code: public T max() {
          TObjectIntIterator<T> iter = counts.iterator();
          int maxCount = -1;
          T max = null;
          while (iter.hasNext()) {
              iter.advance();
              int count = iter.value();
              if (count > maxCount) {
                  max = iter.key();
                  maxCount = count;
              }
          }
          return max;
      }
docs: Returns the element that currently has the largest count.  If no objects
  have been counted, {@code null} is returned.  Ties in counts are
  arbitrarily broken.