AbstractCombinedPredicate extends AbstractPredicate<ENTITY> implements CombinedPredicate<ENTITY> { protected List<Predicate<? super ENTITY>> getPredicates() { return unmodifiableList(predicates); } 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 testGetPredicates() { CombinedPredicate<Integer> p = new AbstractCombinedPredicate.AndCombinedBasePredicateImpl<>(Arrays.asList(MOD2, MOD4)); p = p.and(MOD8); final List<Predicate<Integer>> expected = Arrays.asList(MOD2, MOD4, MOD8); final List<Predicate<? super Integer>> actual = p.stream().collect(toList()); assertEquals(expected, actual); }