кстати, надо попробовать сделать пример, когда запрет self reference (необходимый для тривиальной перемещаемости всех объектов) запрещает декомпозицию с сохранением гарантии, он вроде должен существовать
вот с наследованием может прокатить. тогда если мы отдали поинтер на self в другие обработчики, то они останутся живы. А если мы копируем из старого объекта в новый то облом. Все обработчики чтобы были уже навешаны пропали.
да весь гуй такой, у тебя связывание сущностей происходит по неконтролируемым ссылкам за счёт того, что у тебя есть порядки лайфтаймов (то есть неконтролируемая ссылка является внутренней для создающего пару объектов)