До МRE не получилось упростить?
Короче, смотри примерно, есть общее хранилище данных с персистентной моделью, в него надо вписывать undo-цепочки условного текстового редактора, которые микрокомандные
Ты пишешь номер ревизии в хранилище данных и аллокаешь шареный буфер, в который в будущем при выгрузке кладешь микрокомандную undo-очередь
Есть проблема - данные могут потребовать интерпретировать прямо сейчас, поэтому в этом шареном буфере лежит коллбек, связанный с текущей загруженной областью, и есть связанный с этим коллбеком инвариант
У тебя получается, что условный загруженный текстовый редактор просто 1 в 1 забиндан по лайфтайму со списком ревизий и у тебя нет порядка в котором их удалять