public T DequeueHead()
        {
            T value;

            if (store.GetHead(out value))
            {
                store.RemoveHead();
                return(value);
            }

            throw new InvalidOperationException();
        }