def MultiListChildren(self, urns, limit=None, age=NEWEST_TIME):
    """Lists bunch of directories efficiently.

    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:
       Tuples of Subjects and a list of children urns of a given subject.
    """
    checked_subjects = set()

    for subject, values in data_store.DB.AFF4MultiFetchChildren(
        urns, timestamp=Factory.ParseAgeSpecification(age), limit=limit):

      checked_subjects.add(subject)

      subject_result = []
      for child, timestamp in values:
        urn = rdfvalue.RDFURN(subject).Add(child)
        urn.age = rdfvalue.RDFDatetime(timestamp)
        subject_result.append(urn)

      yield subject, subject_result

    for subject in set(urns) - checked_subjects:
      yield subject, []
Lists bunch of directories efficiently.

    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:
       Tuples of Subjects and a list of children urns of a given subject.