static L filter(Iterable c, O pred) { ifdef filter_debug print("Slow filter called"); endifdef new L x; if (c != null) for (O o : c) if (isTrue(callF(pred, o))) x.add(o); ret x; } static L filter(O pred, Iterable c) { ret filter(c, pred); } static L filter(Iterable c, F1 pred) { new L x; if (c != null) for (B o : c) if (pred.get(o).booleanValue()) x.add(o); ret x; } static L filter(F1 pred, Iterable c) { ret filter(c, pred); }