// returns true if anything was removed
static <A> bool lambdaMapLike removeElementsThat(IPred<A> pred, Cl<A> c) {
  if (c == null || pred == null) false;
  Iterator<A> it = iterator(c);
  bool change;
  while (it.hasNext())
    if (pred.get(it.next())) {
      it.remove();
      set change;
    }
  ret change;
}

static <A> bool removeElementsThat(Cl<A> c, IPred<A> pred) {
  ret removeElementsThat(pred, c);
}