public T DequeueHead() { T value; if (store.GetHead(out value)) { store.RemoveHead(); return(value); } throw new InvalidOperationException(); }