static A lastThat(L l, O pred) { for (int i = l(l)-1; i >= 0; i--) { A a = l.get(i); if (checkCondition(pred, a)) ret a; } null; } static A lambdaMapLike lastThat(O pred, L l) { ret lastThat(l, pred); } static A lastThat(IPred pred, L l) { ret lastThat((O) pred, l); } static A lastThat(L l, IPred pred) { ret lastThat(pred, l); } static A lastThat(Iterable l, IPred pred) { A x = null; if (l != null) for (a : l) if (pred.get(a)) x = a; ret x; }