Подозреваю, что компилятор видит, что у тебя рекурсия и на всякий случай unroll делает, так как увидеть явной остановки не может.
А когда unroll заканчивается и он начинает вызовы делать, то он уже слишком глубоко спустился в словарь и там условие остановки не срабатывает.