### Question:
CompositeProcedure implements Procedure<A> { public <T> CompositeProcedure<T> of(Function<? super T, ? extends A> preceding) { return new CompositeProcedure<T>(function.of(preceding)); } CompositeProcedure(Procedure<? super A> procedure); private  CompositeProcedure(CompositeFunction<? super A, Object> function); CompositeProcedure<T> of(Function<? super T, ? extends A> preceding); void run(A obj); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test(expected=NullPointerException.class) public void testNullProcedureNotAllowed2() throws Exception { new CompositeProcedure<Object>(NoOp.instance()).of(null); }
@Test public void testOf() throws Exception { Composite.procedure(NoOp.instance()).of(Identity.instance()).run(null); }