@Test
public void testUncheckTest2() {

    final Fun.ThrowingBiPredicate<String, Integer> predicate = (key, newValue) -> {
        if (newValue % 3 == 0) {
            throw new Exception("multiples of three are disallowed");
        }
        return newValue % 2 == 0;
    };
    Integer[] ints = Stream.generate(new AtomicInteger(0)::incrementAndGet).limit(2)
            .map(zipValuesWithKeyFunc(String::valueOf))
            .filter(testEntry(uncheckTest2(predicate)))
            .map(Map.Entry::getValue)
            .toArray(Integer[]::new);
    assertArrayEquals("ints should contain only 2", new Integer[]{2}, ints);
}