public Memory <byte>[] GetPagePackets(int pageIndex) { if (_cachedPagePackets != null && _lastPageIndex == pageIndex) { return(_cachedPagePackets); } var pageOffset = _pageOffsets[pageIndex]; if (pageOffset < 0) { pageOffset = -pageOffset; } _reader.Lock(); try { _reader.ReadPageAt(pageOffset); return(_cachedPagePackets = _reader.GetPackets()); } finally { _reader.Release(); } }