/// <summary>
        /// Gets the dependency value for a derived query asynchronously and with a cancellation token.
        /// </summary>
        public IDependencyValue GetDerived(object key, DerivedDependencyValue.ComputeValueAsyncCtDelegate recompute)
        {
            if (values.TryGetValue(key, out var value))
            {
                return((DerivedDependencyValue)value);
            }
            var newValue = new DerivedDependencyValue(recompute);

            values.Add(key, newValue);
            return(newValue);
        }
 /// <summary>
 /// Gets the dependency value for a derived query asynchronously and with a cancellation token.
 /// </summary>
 public IDependencyValue GetDerived <T>(object key, Func <DependencySystem, CancellationToken, Task <T> > recompute) =>
 GetDerived(key, DerivedDependencyValue.ToAsyncCtDelegate(recompute));
 /// <summary>
 /// Gets the dependency value with a cancellation token.
 /// </summary>
 public IDependencyValue GetDerived(object key, DerivedDependencyValue.ComputeValueDelegate recompute) =>
 GetDerived(key, DerivedDependencyValue.ToAsyncCtDelegate(recompute));