private static <T> List<T> filterToList( Iterable<T> source, Filter<T>... filters )
    {
        List<T> dest = new ArrayList<T>();
        for ( T each : source ) {
            filter_loop:
            for ( Filter<T> filter : filters ) {
                if ( filter.accept( each ) ) {
                    dest.add( each );
                    break filter_loop;
                }
            }
        }
        return dest;
    }