Решение совершенно по фану. Но по логике - оно должно работать (возможно очень медленно, но всё же). Кидаю исходные данные через клонирование. Где происходит изменение входящих данных?