docs: def Generate(self, items, token=None):
      """Generates archive from a given collection.
  
      Iterates the collection and generates an archive by yielding contents
      of every referenced AFF4Stream.
  
      Args:
        items: Iterable of rdf_client_fs.StatEntry objects
        token: User's ACLToken.
  
      Yields:
        Binary chunks comprising the generated archive.
      """
  
      del token  # unused, to be removed with AFF4 code
  
      client_ids = set()
      for item_batch in collection.Batch(items, self.BATCH_SIZE):
  
        client_paths = set()
        for item in item_batch:
          try:
            client_path = flow_export.CollectionItemToClientPath(
                item, self.client_id)
          except flow_export.ItemNotExportableError:
            continue
  
          if not self.predicate(client_path):
            self.ignored_files.add(client_path)
            self.processed_files.add(client_path)
            continue
  
          client_ids.add(client_path.client_id)
          client_paths.add(client_path)
  
        for chunk in file_store.StreamFilesChunks(client_paths):
          self.processed_files.add(chunk.client_path)
          for output in self._WriteFileChunk(chunk=chunk):
            yield output
  
        self.processed_files |= client_paths - (
            self.ignored_files | self.archived_files)
  
      if client_ids:
        for client_id, client_info in iteritems(
            data_store.REL_DB.MultiReadClientFullInfo(client_ids)):
          client = api_client.ApiClient().InitFromClientInfo(client_info)
          for chunk in self._GenerateClientInfo(client_id, client):
            yield chunk
  
      for chunk in self._GenerateDescription():
        yield chunk
  
      yield self.archive_generator.Close()