static A lowestByField(Iterable l, S field) { A lowest = null; O lowestValue = null; for (A a : unnull(l)) { O val = getOpt(a, field); if (lowest == null || cmp(val, lowestValue) < 0) { lowest = a; lowestValue = val; } } ret lowest; } static A mapMethodLike lowestByField(S field, Iterable l) { ret lowestByField(l, field); }