In my program I have a DataProvider which manages two entity types (lets name them A and B) and handles updates in them. It has a delegate protocol with method named dataProviderDidChange. Every time an underlying entity changes it passes it to it’s delegate. However due to it’s implementation delegate cannot properly handle two subsequent dataProviderDidChange calls although it deals fine with continuous changes coming from one OR the other entity. Given this and the fact that DataProvider absolutely MUST encapsulate both entity types and delegate implementation CANNOT be changed my idea was to somehow filter out the first of two subsequent dataProviderDidChange calls. However I couldn’t find a reliable solution (not based on delays and checks) because underlying entities change independently. If “-” is idleness, then given the pattern of changes A-A-B-A-AB, the AB pairs causes delegate to fail. Note that BA is AFAIK impossible.