static Collection filterByField_smart(Collection l, S field, O value) {
if (l == null) null;
for (A n : l)
if (!eq(getOpt(n, field), value)) {
Iterator it = iterator(l);
A node;
new L x;
while ((node = it.next()) != n)
x.add(node);
while (it.hasNext()) {
node = it.next();
if (eq(getOpt(node, field), value))
x.add(node);
}
ret x;
}
ret l;
}