Небольшие комментарии. Я привел упрощенный пример на 4 строчки, которые поясняют ошибку. В реальном коде там 26 строк и еще проверяются другие типы. И данный код писал не я, так что не надо на меня косо смотретьВ проекте много людей и развивается много лет, кода тоже много.

Хотелось бы, чтобы комментаторы немного поясняли свое мнение, чем именно они возмущены? Тем, что для разных типов используется перегруженная функция с одним и тем же именем, или чем-то другим.