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;
  }
}