В binding хранятся связки (полное имя функции, типы аргументов) - функция обёртка При оборачивании функции мы указываем типы желаемых аргументов, декоратор внутри выставляет соответствие. При вызове обёрнутой функции берём типы аргументов и (заранее туда сунутое) имя, получаем соответствующий executor и выполняем его с переданными аргументами.