private void Decompress() { if ((Size != SizeUncompressed) && (Flags == 0)) { try { CompressedData.PushPosition(); _data = CompressedData.UnpackRunLengthEncoding(); } catch (Exception ex) { throw new RunLengthEncodingException($"Bad RLE data block at index {CompressedData} in {ToString()}", ex); } finally { CompressedData.PopPosition(); } } else { _data = CompressedData; } }