### Question:
MultiConvert { public <R> R with(Function<Multi<T>, R> converter) { nonNull(converter, "converter"); return converter.apply(upstream); } MultiConvert(Multi<T> upstream); R with(Function<Multi<T>, R> converter); Publisher<T> toPublisher();  }### Answer:
@Test public void testMultiConvertWithCustomConverter() { Multi<String> multi = Multi.createFrom().items(1, 2, 3).convert().with(m -> m.map(i -> Integer.toString(i))); List<String> list = multi.collectItems().asList().await().indefinitely(); assertThat(list).containsExactly("1", "2", "3"); }
@Test public void testThatConverterCannotBeNull() { assertThrows(IllegalArgumentException.class, () -> Multi.createFrom().items(1, 2, 3).convert().with(null)); }