Написал я конечно километровое, это просто пример. Который позволил мне по счастливой случайности не ввозить динамическую диспетчеризацию в код.