<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def IterateAllClientsFullInfo(self, min_last_ping=None, batch_size=50000):
 """Iterates over all available clients and yields full info protobufs. Args: min_last_ping: If not None, only the clients with last-ping timestamps newer than (or equal to) min_last_ping will be returned. batch_size: Always reads <batch_size> client full infos at a time. Yields: An rdfvalues.objects.ClientFullInfo 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.MultiReadClientFullInfo(batch)
      for full_info in itervalues(res):
        yield full_info