public ReadOnlyMemory <byte> GetBytes(int wantSize) { if (wantSize < 0) { throw new ArgumentOutOfRangeException(nameof(wantSize)); } if (wantSize == 0) { return(new byte[0]); } MemoryBuffer <byte> ret = new MemoryBuffer <byte>(); while (true) { if (fifo.Length >= wantSize) { return(fifo.DequeueContiguousSlow(wantSize)); } var tmp = GenerateNextBlockInternal(); fifo.Enqueue(tmp); } }