code: def ParseFileObject(self, parser_mediator, file_object):
      
      display_name = parser_mediator.GetDisplayName()
  
      if not zipfile.is_zipfile(file_object):
        raise errors.UnableToParseFile(
            '[{0:s}] unable to parse file: {1:s} with error: {2:s}'.format(
                self.NAME, display_name, 'Not a Zip file.'))
  
      try:
        zip_file = zipfile.ZipFile(file_object, 'r', allowZip64=True)
        self._ProcessZipFileWithPlugins(parser_mediator, zip_file)
        zip_file.close()
  
      # Some non-ZIP files return true for is_zipfile but will fail with a
      # negative seek (IOError) or another error.
      except (zipfile.BadZipfile, struct.error) as exception:
        raise errors.UnableToParseFile(
            '[{0:s}] unable to parse file: {1:s} with error: {2!s}'.format(
                self.NAME, display_name, exception))
docs: Parses a compound ZIP file-like object.
  
      Args:
        parser_mediator (ParserMediator): mediates interactions between parsers
            and other components, such as storage and dfvfs.
        file_object (dfvfs.FileIO): a file-like object.
  
      Raises:
        UnableToParseFile: when the file cannot be parsed.