### Question:
ConditionalBinaryProcedure implements BinaryProcedure<L, R> { public void run(L left, R right) { if (ifPred.test(left, right)) { thenProc.run(left, right); } else { elseProc.run(left, right); } } ConditionalBinaryProcedure(BinaryPredicate<? super L, ? super R> ifPred,
            BinaryProcedure<? super L, ? super R> thenProc);  ConditionalBinaryProcedure(BinaryPredicate<? super L, ? super R> ifPred,
            BinaryProcedure<? super L, ? super R> thenProc, BinaryProcedure<? super L, ? super R> elseProc); void run(L left, R right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testRun() throws Exception { RunCounter left = new RunCounter(); RunCounter right = new RunCounter(); ConditionalBinaryProcedure<Boolean, Object> p = new ConditionalBinaryProcedure<Boolean, Object>( LeftIdentity.PREDICATE, left, right); assertEquals(0,left.count); assertEquals(0,right.count); p.run(Boolean.TRUE, null); assertEquals(1,left.count); assertEquals(0,right.count); p.run(Boolean.FALSE, null); assertEquals(1,left.count); assertEquals(1,right.count); p.run(Boolean.TRUE, null); assertEquals(2,left.count); assertEquals(1,right.count); }