<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def IterateAllClientSnapshots(self, min_last_ping=None, batch_size=50000):
 """Iterates over all available clients and yields client snapshot objects. Args: min_last_ping: If provided, only snapshots for clients with last-ping timestamps newer than (or equal to) the given value will be returned. batch_size: Always reads <batch_size> snapshots at a time. Yields: An rdfvalues.objects.ClientSnapshot object for each client in the db. """

    all_client_ids = self.ReadAllClientIDs(min_last_ping=min_last_ping)

    for batch in collection.Batch(all_client_ids, batch_size):
      res = self.MultiReadClientSnapshot(batch)
      for snapshot in itervalues(res):
        if snapshot:
          yield snapshot