static L filter_pcall(Iterable c, O pred) { if (pred instanceof F1) ret filter_pcall(c, (F1) pred); new L x; if (c != null) for (O o : c) if (isTrue(pcallF(pred, o))) x.add(o); ret x; } static L filter_pcall(O pred, Iterable c) { ret filter_pcall(c, pred); } static L filter_pcall(Iterable c, F1 pred) { new L x; if (c != null) for (B o : c) pcall { if (pred.get(o).booleanValue()) x.add(o); } ret x; } static L filter_pcall(F1 pred, Iterable c) { ret filter_pcall(c, pred); }