code: def _ParseRecordString(
        self, record_strings_data, record_strings_data_offset, string_offset):
      
      if string_offset == 0:
        return None
  
      if string_offset & self._STRING_OFFSET_MSB:
        if (string_offset >> 60) != 8:
          raise errors.ParseError('Invalid inline record string flag.')
  
        string_size = (string_offset >> 56) & 0x0f
        if string_size >= 8:
          raise errors.ParseError('Invalid inline record string size.')
  
        string_data = bytes(bytearray([
            string_offset >> (8 * byte_index) & 0xff
            for byte_index in range(6, -1, -1)]))
  
        try:
          return string_data[:string_size].decode('utf-8')
        except UnicodeDecodeError as exception:
          raise errors.ParseError(
              'Unable to decode inline record string with error: {0!s}.'.format(
                  exception))
  
      data_offset = string_offset - record_strings_data_offset
      record_string_map = self._GetDataTypeMap('asl_record_string')
  
      try:
        record_string = self._ReadStructureFromByteStream(
            record_strings_data[data_offset:], string_offset, record_string_map)
      except (ValueError, errors.ParseError) as exception:
        raise errors.ParseError((
            'Unable to parse record string at offset: 0x{0:08x} with error: '
            '{1!s}').format(string_offset, exception))
  
      return record_string.string.rstrip('\x00')
docs: Parses a record string.
  
      Args:
        record_strings_data (bytes): record strings data.
        record_strings_data_offset (int): offset of the record strings data
            relative to the start of the file.
        string_offset (int): offset of the string relative to the start of
            the file.
  
      Returns:
        str: record string or None if string offset is 0.
  
      Raises:
        ParseError: if the record string cannot be parsed.