@Test
public void testUncheck1() {

    final Fun.ThrowingFunction<Integer, Integer> function = newValue -> {
        if (newValue % 3 == 0) {
            throw new Exception("multiples of three are disallowed");
        }
        return newValue;
    };
    Integer[] ints = Stream.generate(new AtomicInteger(0)::incrementAndGet)
            .map(uncheck1(function)).limit(2).toArray(Integer[]::new);
    assertArrayEquals("ints should contain 1 and 2", new Integer[]{1, 2}, ints);
}