public Subscription(IObserver <SubscriptionType> observer, EventFlowSubject <SubscriptionType> parentSubject)
 {
     Debug.Assert(observer != null);
     Debug.Assert(parentSubject != null);
     this.parentSubject = parentSubject;
     this.observer      = observer;
 }
            public void Dispose()
            {
                var current = Interlocked.Exchange <IObserver <SubscriptionType> >(ref this.observer, null);

                if (current != null)
                {
                    this.parentSubject.Unsubscribe(current);
                    this.parentSubject = null;
                }
            }