<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def RecursiveMultiListChildren(self, urns, limit=None, age=NEWEST_TIME):
 """Recursively lists bunch of directories. Args: urns: List of urns to list children. limit: Max number of children to list (NOTE: this is per urn). age: The age of the items to retrieve. Should be one of ALL_TIMES, NEWEST_TIME or a range. Yields: (subject<->children urns) tuples. RecursiveMultiListChildren will fetch children lists for initial set of urns and then will fetch children's children, etc. For example, for the following objects structure: a-> b -> c -> d RecursiveMultiListChildren(['a']) will return: [('a', ['b']), ('b', ['c', 'd'])] """


    checked_urns = set()
    urns_to_check = urns
    while True:
      found_children = []

      for subject, values in self.MultiListChildren(
          urns_to_check, limit=limit, age=age):

        found_children.extend(values)
        yield subject, values

      checked_urns.update(urns_to_check)

      urns_to_check = set(found_children) - checked_urns
      if not urns_to_check:
        break