docs: public <E extends T> List<E> leastOf(Iterator<E> iterator, int k) {
      checkNotNull(iterator);
      checkNonnegative(k, "k");
  
      if (k == 0 || !iterator.hasNext()) {
        return ImmutableList.of();
      } else if (k >= Integer.MAX_VALUE / 2) {
        // k is really large; just do a straightforward sorted-copy-and-sublist
        ArrayList<E> list = Lists.newArrayList(iterator);
        Collections.sort(list, this);
        if (list.size() > k) {
          list.subList(k, list.size()).clear();
        }
        list.trimToSize();
        return Collections.unmodifiableList(list);
      } else {
        TopKSelector<E> selector = TopKSelector.least(k, this);
        selector.offerAll(iterator);
        return selector.topK();
      }
    }