docs: public static <T> UnmodifiableIterator<T> unmodifiableIterator(
        final Iterator<T> iterator) {
      checkNotNull(iterator);
      if (iterator instanceof UnmodifiableIterator) {
        return (UnmodifiableIterator<T>) iterator;
      }
      return new UnmodifiableIterator<T>() {
        @Override
        public boolean hasNext() {
          return iterator.hasNext();
        }
        @Override
        public T next() {
          return iterator.next();
        }
      };
    }