потестил, у меня все проходит. логика простая - 4 булиновские переменные по дефолту равны true (для того чтобы если критерий не задан, то работало и без него). если файл не подходит под критерий соответствующая переменная становится false.