code: def ParseMetadataFile(
        self, parser_mediator, file_entry, data_stream_name):
      
      parent_path_spec = getattr(file_entry.path_spec, 'parent', None)
      filename_upper = file_entry.name.upper()
      if (self._mft_parser and parent_path_spec and
          filename_upper in ('$MFT', '$MFTMIRR') and not data_stream_name):
        self._ParseDataStreamWithParser(
            parser_mediator, self._mft_parser, file_entry, '')
  
      elif (self._usnjrnl_parser and parent_path_spec and
            filename_upper == '$USNJRNL' and data_stream_name == '$J'):
        # To be able to ignore the sparse data ranges the UsnJrnl parser
        # needs to read directly from the volume.
        volume_file_object = path_spec_resolver.Resolver.OpenFileObject(
            parent_path_spec, resolver_context=parser_mediator.resolver_context)
  
        try:
          self._ParseFileEntryWithParser(
              parser_mediator, self._usnjrnl_parser, file_entry,
              file_object=volume_file_object)
        finally:
          volume_file_object.close()
docs: Parses a metadata file.
  
      Args:
        parser_mediator (ParserMediator): parser mediator.
        file_entry (dfvfs.FileEntry): file entry.
        data_stream_name (str): data stream name.