Другая работала. Изначальная. Но выглядела мягко говоря... не очень.
Передо мной стояла задача: надо было заставить первую работать.
Было две стратегии:
1. Долгим вдумчивым взглядом пытаться понять, чем же эти функции различаются, и где я облажался;
2. По частям вводить отрефакторенные блоки в старую функцию и следить, когда она перестанет работать.
Второе оказалось эффективнее.