public void RemoveHandler(EventHandler <PropertyChangedEventArgs> handler, string propertyName) { PropertyRecord pr = (PropertyRecord)_dict[propertyName]; if (pr != null) { pr.RemoveHandler(handler); if (pr.IsEmpty) { _dict.Remove(propertyName); } // invalidate list of all listeners _dict.Remove(AllListenersKey); _proposedAllListenersList = null; } }