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);
            }));
        }