public static <S, T> RemoteIterator<T> mappingRemoteIterator(
      RemoteIterator<S> iterator,
      FunctionRaisingIOE<? super S, T> mapper) {
    return new MappingRemoteIterator<>(iterator, mapper);
  }
@Test
  public void testClosePassthrough() throws Throwable {
    CountdownRemoteIterator countdown = new CountdownRemoteIterator(0);
    RemoteIterator<Integer> it = mappingRemoteIterator(
        countdown,
        i -> i);
    verifyInvoked(it, 0, this::log);
    // the foreach() operation called close()
    countdown.assertCloseCount(1);
    extractStatistics(countdown);
    ((Closeable)it).close();
    countdown.assertCloseCount(1);
  }