public virtual void Deactivate() { if (children != null) { for (var i = 0; i < childrenCount; i++) { children[i].RemoveSubscriber(this); children[i] = null; } childrenCount = 0; ArrayPool <AtomBase> .Return(ref children); } if (subscribers != null) { for (var i = 0; i < subscribersCount; i++) { subscribers[i].Obsolete(); } } if (options.TryReset(AtomOptions.Active)) { AtomRegistry.OnInactivate(this); } state = AtomState.Obsolete; }