public static TReactive Reactive <TValue, TReactive>(
            this IReactiveElement self,
            Func <IObservable <TValue>, TReactive> factory,
            IObservable <TValue> source,
            IEqualityComparer <TValue>?comparer = null)
            where TReactive : class, IUpdatableElement, IDisposable
        {
            if (comparer != null)
            {
                source = source.DistinctUntilChanged(comparer ?? EqualityComparer <TValue> .Default);
            }

            return(self.CreateReactive(source, factory));
        }
 public static Computed <T> RawComputed <T>(
     this IReactiveElement self,
     IObservable <T> valueStream) =>
 self.CreateReactive(valueStream, ComputedFactory);