internal EvaluatableQbservable(EvaluatableQbservableProvider provider, Expression expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            if (!typeof(IQbservable <T>).IsAssignableFrom(expression.Type))
            {
                throw new ArgumentException("Expression doesn't produce a type that is compatible with this qbservable's element type", nameof(expression));
            }

            Provider   = provider ?? throw new ArgumentNullException(nameof(provider));
            Expression = expression;
        }
 internal EvaluatableQbservable(IObservableEvaluator evaluator)
 {
     Provider   = new EvaluatableQbservableProvider(evaluator, GetType());
     Expression = Expression.Constant(this);
 }