@Test(expected = Fun.FunRuntimeException.class)
public void testUncheck0AndThrow() {

    final AtomicInteger latch = new AtomicInteger(0);
    final Fun.ThrowingSupplier<Integer> supplier = () -> {
        int newValue = latch.incrementAndGet();
        if (newValue % 3 == 0) {
            throw new Exception("multiples of three are disallowed");
        }
        return newValue;
    };
    // should throw
    Integer[] ints = Stream.generate(uncheck0(supplier)).limit(3).toArray(Integer[]::new);
}