ну да, похоже самый оптимальный вариант это: добавить доп метод для разделения and и or, оставить метод has без изменений и в цикле передавать ключ в метод has и как бы строгая типизация сама по себе сработает, а doctype'ом описать что ожидается массив со строками