public QueryableReliableIndexedDictionary(ReliableIndexedDictionaryProvider <TKey, TValue> provider, Expression expression)
        {
            if (expression == null)
            {
                throw new ArgumentNullException("Expression can not be null");
            }

            if (!typeof(IQueryable <TResult>).IsAssignableFrom(expression.Type))
            {
                throw new ArgumentOutOfRangeException("Expression and Queryable types do not match");
            }

            Provider   = provider ?? throw new ArgumentNullException("Provider can not be null");
            Expression = expression;
        }
 public QueryableReliableIndexedDictionary(IReliableIndexedDictionary <TKey, TValue> dictionary, IReliableStateManager stateManager)
 {
     Provider   = new ReliableIndexedDictionaryProvider <TKey, TValue>(dictionary, stateManager);
     Expression = Expression.Constant(this);
 }