Когда программа ведёт себя неожиданно, хочется сразу переписать большой фрагмент. Полезнее сначала собрать воспроизводимый пример и проверить предположения.

Интересно сравнить понятные объяснения без лишнего усложнения.