### Question:
RemoveMatching implements BinaryProcedure<Iterator<? extends T>, Predicate<? super T>> { public void run(Iterator<? extends T> left, Predicate<? super T> right) { while (left.hasNext()) { if (right.test(left.next())) { left.remove(); } } }  void run(Iterator<? extends T> left, Predicate<? super T> right); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); static RemoveMatching<Object> instance();  }### Answer:
@Test public void testRemove() { new RemoveMatching<Integer>().run(list.iterator(), isOdd); assertEquals(evens, list); }