code: @CanIgnoreReturnValue // TODO(kak): Consider removing this
    public <E extends T> E min(Iterator<E> iterator) {
      // let this throw NoSuchElementException as necessary
      E minSoFar = iterator.next();
  
      while (iterator.hasNext()) {
        minSoFar = min(minSoFar, iterator.next());
      }
  
      return minSoFar;
    }
docs: Returns the least of the specified values according to this ordering. If there are multiple
  least values, the first of those is returned. The iterator will be left exhausted: its {@code
  hasNext()} method will return {@code false}.
  
  <p><b>Java 8 users:</b> Continue to use this method for now. After the next release of Guava,
  use {@code Streams.stream(iterator).min(thisComparator).get()} instead (but note that it does
  not guarantee which tied minimum element is returned).
  
  @param iterator the iterator whose minimum element is to be determined
  @throws NoSuchElementException if {@code iterator} is empty
  @throws ClassCastException if the parameters are not <i>mutually comparable</i> under this
  ordering.
  @since 11.0