public virtual IDisposable Subscribe(IObserver <T> observer) { // Parent is not a tracked observable. if (_parentInfo == null) { return(_parent.Subscribe(observer)); } var subscriptionId = EventHandlerExtensions.OnSubscribe(_session, _childInfo, _parentInfo); var disp = _parent.Subscribe(observer); return(Disposable.Create(() => { disp.Dispose(); EventHandlerExtensions.OnUnsubscribe(_session, subscriptionId); })); }