docs: public static <T, R> Iterator<R> map(final Iterator<T> iterator, final IFunction<T, R> mapper) {
          return new Iterator<R>() {
              @Override
              public boolean hasNext() {
                  return iterator.hasNext();
              }
  
              @Override
              public R next() {
                  return mapper.apply(iterator.next());
              }
  
              @Override
              public void remove() {
                  iterator.remove();
              }
          };
      }