### Question:
TransposedProcedure implements BinaryProcedure<L, R> { public void run(L left, R right) { procedure.run(right, left); } TransposedProcedure(BinaryProcedure<? super R, ? super L> procedure); void run(L left, R right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static TransposedProcedure<R, L> transpose(BinaryProcedure<? super L, ? super R> p);  }### Answer:
@Test public void testEvaluate() throws Exception { LeftNotNullCounter counter = new LeftNotNullCounter(); BinaryProcedure<Object, Object> p = new TransposedProcedure<Object, Object>(counter); assertEquals(0,counter.count); p.run(null,"not null"); assertEquals(1,counter.count); p.run("not null",null); assertEquals(1,counter.count); }