@Override
 public boolean retainAll(Collection<?> arg0) {
   boolean removed = true;
   List<TimeWrapped> removals = new ArrayList<TimeWrapped>();
   for (TimeWrapped item : queue) {
     boolean toRemove = true;
     for (Object keeper : arg0) toRemove &= !item.equals(keeper);
     if (toRemove) removals.add(item);
   }
   for (TimeWrapped item : removals) removed &= remove(item);
   return removed;
 }