public void WriteLength(bool recoverStreamPosition)
{
_endPosition = _stream.Position;
var len = Length;
_stream.Seek(_startPosition, SeekOrigin.Begin);
var lenBytes = BitConverter.GetBytes(len);
_stream.Write(lenBytes, 0, lenBytes.Length);
if (recoverStreamPosition)
_stream.Seek(_endPosition, SeekOrigin.Begin);
}
}