### Question:
CompositePredicate implements Predicate<A> { public <P> CompositePredicate<P> of(Function<? super P, ? extends A> preceding) { return new CompositePredicate<P>(function.of(preceding)); } CompositePredicate(Predicate<? super A> predicate); private  CompositePredicate(CompositeFunction<? super A, Boolean> function); CompositePredicate<P> of(Function<? super P, ? extends A> preceding); boolean test(A obj); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testOf() throws Exception { CompositePredicate<Object> f = new CompositePredicate<Object>(Constant.TRUE); assertTrue(f.test(null)); for (int i=0;i<10;i++) { f = f.of(Constant.FALSE); assertTrue(f.test(null)); } }