<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _ParseDataObject(self, file_object, file_offset):
 """Parses a data object. Args: file_object (dfvfs.FileIO):
 a file-like object. file_offset (int):
 offset of the data object relative to the start of the file-like object. Returns: bytes: data. Raises: ParseError: if the data object cannot be parsed. """

    data_object_map = self._GetDataTypeMap('systemd_journal_data_object')

    try:
      data_object, _ = self._ReadStructureFromFileObject(
          file_object, file_offset, data_object_map)
    except (ValueError, errors.ParseError) as exception:
      raise errors.ParseError((
          'Unable to parse data object at offset: 0x{0:08x} with error: '
          '{1!s}').format(file_offset, exception))

    if data_object.object_type != self._OBJECT_TYPE_DATA:
      raise errors.ParseError('Unsupported object type: {0:d}.'.format(
          data_object.object_type))

    if data_object.object_flags not in (
        0, self._OBJECT_COMPRESSED_FLAG_XZ, self._OBJECT_COMPRESSED_FLAG_LZ4):
      raise errors.ParseError('Unsupported object flags: 0x{0:02x}.'.format(
          data_object.object_flags))

    # The data is read separately for performance reasons.
    data_size = data_object.data_size - 64
    data = file_object.read(data_size)

    if data_object.object_flags & self._OBJECT_COMPRESSED_FLAG_XZ:
      data = lzma.decompress(data)

    elif data_object.object_flags & self._OBJECT_COMPRESSED_FLAG_LZ4:
      uncompressed_size_map = self._GetDataTypeMap('uint32le')

      try:
        uncompressed_size = self._ReadStructureFromByteStream(
            data, file_offset + 64, uncompressed_size_map)
      except (ValueError, errors.ParseError) as exception:
        raise errors.ParseError((
            'Unable to parse LZ4 uncompressed size at offset: 0x{0:08x} with '
            'error: {1!s}').format(file_offset + 64, exception))

      data = lz4.block.decompress(
          data[8:], uncompressed_size=uncompressed_size)

    return data