Как ты угадал)))
Почти так. If хранит в себе ресурс со всеми блоками в нём. При переставлении блока создаётся новая уникальная копия данных блока с помощью duplicate(true). Но проблема как раз в том, если блок не переставляется, то создаваться уникальная копия не будет, ведь создаётся она только в функции переноса. Это мой косяк огромный)