допустим у вас есть визуальное дерево(типа контрол из ближайшего оконного фреймворка), как приемник иерархических данных, и поставщик таких данных, что выдает данные в виде некоего абстрактного иерархического формата, хоть текстового, хоть бинарного.
источник данных не умеет генерить ивенты - типа «удалить узел», «переставить узел из одного парента в другой» и тепе. он умеет только выдавать все дерево.
но такой криндж для приемника не подходит - чисто в лоб придется удалять все визуальное дерево и рисовать новое, на основе новых данных.
ищется способ быстро найти дифф в данных между приемником и источником, и аккуратно подправлять дерево-приемник, не удаляя его, с минимальным количеством изменений.
я такой алгоритм нарисовал, оно работает. но возможно есть и получше.
в качестве модельного примера можно рассмотреть струкутру файловой системы и виз. дерево ее отражающее, но с условием, что никаких ивентов от фс быть не может.