Последняя версия кода

@kirill-kornyakov , @kozinove 
Вот здесь у меня вопрос, насколько правомерны проверки типов у входного аргумента функции? Есть внутреннее расхождение, почему мы в запросах порождаем наследников, а здесь для всех типов запросов одна функция.

Это не единственное место, где возникает такая вещь. Насколько я понимаю, здесь нарушаются SOLID-принципы, причем в явном виде, т.к. с изменением перечня запросов будет изменяться и текущая реализация метода...