public OrderedObservable(
            IObservable <TSource> source,
            Func <TSource, IObservable <TKey> > observableKeySelector,
            bool descending,
            OrderedObservable <TSource> parent)
            : this(source, observableKeySelector, descending)
        {
            Contract.Requires(source != null);
            Contract.Requires(observableKeySelector != null);
            Contract.Requires(parent != null);

            this.parent = parent;
        }
        public OrderedObservable(
            IObservable <TSource> source,
            Func <TSource, TKey> keySelector,
            IComparer <TKey> comparer,
            bool descending,
            OrderedObservable <TSource> parent)
            : this(source, keySelector, comparer, descending)
        {
            Contract.Requires(source != null);
            Contract.Requires(keySelector != null);
            Contract.Requires(parent != null);

            this.parent = parent;
        }