<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def ParseDataStream(self, parser_mediator, file_entry, data_stream_name):
 """Parses a data stream of a file entry with the enabled parsers. Args: parser_mediator (ParserMediator):
 parser mediator. file_entry (dfvfs.FileEntry):
 file entry. data_stream_name (str):
 data stream name. Raises: RuntimeError: if the file-like object or the parser object is missing. """

    file_object = file_entry.GetFileObject(data_stream_name=data_stream_name)
    if not file_object:
      raise RuntimeError(
          'Unable to retrieve file-like object from file entry.')

    try:
      parser_names = self._GetSignatureMatchParserNames(file_object)

      parse_with_non_sigscan_parsers = True
      if parser_names:
        parse_result = self._ParseFileEntryWithParsers(
            parser_mediator, parser_names, file_entry, file_object=file_object)
        if parse_result in (
            self._PARSE_RESULT_FAILURE, self._PARSE_RESULT_SUCCESS):
          parse_with_non_sigscan_parsers = False

      if parse_with_non_sigscan_parsers:
        self._ParseFileEntryWithParsers(
            parser_mediator, self._non_sigscan_parser_names, file_entry,
            file_object=file_object)

    finally:
      file_object.close()