class Util { interface Filter<T> { boolean remove(T aT); } public static <T> List<T> filter(Iterable<T> aList, Filter<T> aFilter) { List<T> _result = new ArrayList<T>(); for (T _t : aList) { if (!aFilter.remove(_t) { _result.add(_t); } } return _result; } }