code: public static boolean retainAll(
        Iterator<?> removeFrom, Collection<?> elementsToRetain) {
      return removeIf(removeFrom, not(in(elementsToRetain)));
    }
docs: Traverses an iterator and removes every element that does not belong to the
  provided collection. The iterator will be left exhausted: its
  {@code hasNext()} method will return {@code false}.
  
  @param removeFrom the iterator to (potentially) remove elements from
  @param elementsToRetain the elements to retain
  @return {@code true} if any element was removed from {@code iterator}