public void doFilter(final List<? extends T> in) {
    sortAscending(in);

    for (int i = 1; i < in.size(); i++) {
      final T child = in.get(i);
      for (int j = i - 1; j >= 0; --j) {
        final T parent = in.get(j);
        if (isAncestor(parent, child)) {
          onRemove(child);
          in.remove(i);
          -- i;
          break;
        }
      }
    }
  }
public void doFilter(final List<? extends T> in)