AbstractCombinedPredicate extends AbstractPredicate<ENTITY> implements CombinedPredicate<ENTITY> { @Override public Stream<Predicate<? super ENTITY>> stream() { return predicates.stream(); } private  AbstractCombinedPredicate(
            final Type type,
            final List<Predicate<? super ENTITY>> predicates); @Override Stream<Predicate<? super ENTITY>> stream(); @Override int size(); @Override Type getType(); @Override abstract CombinedPredicate<ENTITY> and(Predicate<? super ENTITY> other); @Override abstract CombinedPredicate<ENTITY> or(Predicate<? super ENTITY> other); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }
@Test void testStream() { final Set<Predicate<Integer>> set = Stream.of(MOD2, MOD4, MOD8).collect(toSet()); CombinedPredicate<Integer> p = CombinedPredicate.and(MOD2, MOD4); p = p.and(MOD8); assertTrue(p.stream().allMatch(set::contains)); }