code: def ParseFileObject(self, parser_mediator, file_object):
      
      # Since this header value is really generic it is hard not to use filename
      # as an indicator too.
  
      # TODO: Rethink this and potentially make a better test.
      filename = parser_mediator.GetFilename()
      if not filename.startswith('INFO2'):
        return
  
      file_header_map = self._GetDataTypeMap('recycler_info2_file_header')
  
      try:
        file_header, _ = self._ReadStructureFromFileObject(
            file_object, 0, file_header_map)
      except (ValueError, errors.ParseError) as exception:
        raise errors.UnableToParseFile((
            'Unable to parse Windows Recycler INFO2 file header with '
            'error: {0!s}').format(exception))
  
      if file_header.unknown1 != 5:
        parser_mediator.ProduceExtractionWarning('unsupported format signature.')
        return
  
      file_entry_size = file_header.file_entry_size
      if file_entry_size not in (280, 800):
        parser_mediator.ProduceExtractionWarning(
            'unsupported file entry size: {0:d}'.format(file_entry_size))
        return
  
      file_offset = file_object.get_offset()
      file_size = file_object.get_size()
  
      while file_offset < file_size:
        self._ParseInfo2Record(
            parser_mediator, file_object, file_offset, file_entry_size)
  
        file_offset += file_entry_size
docs: Parses a Windows Recycler INFO2 file-like object.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        file_object (dfvfs.FileIO): file-like object.
  
      Raises:
        UnableToParseFile: when the file cannot be parsed.