### Question:
MoreStreams { public static <T, E extends Throwable> void iterateThrough( Stream<? extends T> stream, CheckedConsumer<? super T, E> consumer) throws E { requireNonNull(consumer); for (T element : iterateOnce(stream)) { consumer.accept(element); } } private  MoreStreams(); static Stream<T> generate(
      T seed, Function<? super T, ? extends Stream<? extends T>> step); static Stream<T> flatten(Stream<? extends Stream<? extends T>> streamOfStream); static Iterable<T> iterateOnce(Stream<T> stream); static void iterateThrough(
      Stream<? extends T> stream, CheckedConsumer<? super T, E> consumer); static Stream<List<T>> dice(Stream<? extends T> stream, int maxSize); static Spliterator<List<T>> dice(Spliterator<? extends T> spliterator, int maxSize); @Deprecated static Collector<Map<K, V>, ?, Map<K, V>> uniqueKeys(); static Collector<T, ?, R> flatMapping(
      Function<? super T, ? extends BiStream<? extends K, ? extends V>> flattener,
      BiCollector<K, V, R> downstream); @Deprecated static Collector<T, ?, R> flattening(
      Function<? super T, ? extends Collection<? extends Map.Entry<? extends K, ? extends V>>> flattener,
      BiCollector<K, V, R> downstream); static Collector<Map<K, V>, ?, R> flatteningMaps(
      BiCollector<K, V, R> downstream); static Collector<T, ?, List<T>> toListAndThen(Consumer<? super List<T>> arranger); static Stream<Integer> indexesFrom(int firstIndex); static Stream<T> whileNotNull(Supplier<? extends T> supplier); static Stream<T> withSideEffect(Stream<T> stream, Consumer<? super T> sideEffect); static Collector<T, ?, R> mapping(
      DualValuedFunction<? super T, ? extends K, ? extends V> mapper,
      BiCollector<K, V, R> downstream);  }### Answer:
@Test public void testThrough() { List<String> to = new ArrayList<>(); MoreStreams.iterateThrough(Stream.of(1, 2).map(Object::toString), to::add); assertThat(to).containsExactly("1", "2"); }