code: def RecursiveMultiListChildren(self, urns, limit=None, age=NEWEST_TIME):
      
  
      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
docs: 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'])]