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; }