code: def unpack_wstring(self, offset, length):
          
          start = self._offset + offset
          end = self._offset + offset + 2 * length
          try:
              return bytes(self._buf[start:end]).decode("utf16")
          except AttributeError:  # already a 'str' ?
              return bytes(self._buf[start:end]).decode('utf16')
docs: Returns a string from the relative offset with the given length,
          where each character is a wchar (2 bytes)
          Arguments:
          - `offset`: The relative offset from the start of the block.
          - `length`: The length of the string.
          Throws:
          - `UnicodeDecodeError`