public virtual async Task UpdateCollectionAsync(ICollection <TData> collection)
        {
            var descriptor = GetDescriptor(collection);
            var data       = DataPool.Retrieve(descriptor);

            UpdateCollectionContent(collection, data);

            await BuildCollectionAsync(collection);
        }
        public virtual async Task <IEnumerable <TData> > RetrieveAsync(INonTerminalDescriptor descriptor)
        {
            await Acquire(descriptor);

            return(DataPool.Retrieve(descriptor));
        }
 public virtual void FillCollectionWithData(ICollection <TData> collection, INonTerminalDescriptor descriptor)
 {
     ClearCollection(collection);
     AppendToCollection(DataPool.Retrieve(descriptor), collection);
 }
        public virtual async Task <TData> RetrieveAsync(ITerminalDescriptor descriptor)
        {
            await Acquire(descriptor);

            return(DataPool.Retrieve(descriptor));
        }