If you call GenerateData() on overlays multiple times, multiple observers will be added to the Property. In the destructor, only the last one will be removed.
The solution is quite simple. Before adding a new observer on the property, remove the old one.