/// <summary> /// Must be called whenever a node value is changed externally, for example when a property node's backing field changes its value. /// </summary> public void WasChanged(object source) { if (!Enabled) { return; } Chain <IListener> notifyChain = null; ReactiveManager.TryGetNode(source)?.NotifyChildren(ref notifyChain); while (notifyChain != null) { try { notifyChain.Value.Notify(); } catch (Exception e) { HandleNotifyException(source, e, notifyChain); } notifyChain = notifyChain.Next; } (source as IListener)?.Notify(); //TODO maybe remove this? }