@Override
  public boolean retainAll(Collection<?> c) {
    boolean b = false;
    for (Iterator<T> iterator = this.iterator(); iterator.hasNext(); ) {
      T t = iterator.next();
      if (!c.contains(t)) {
        iterator.remove();
        b = true;
      }
    }
    return b;
  }