docs: def GetClientsForHashes(cls, hashes, token=None, age=aff4.NEWEST_TIME):
      """Yields (hash, client_files) pairs for all the specified hashes.
  
      Args:
        hashes: List of RDFURN's.
        token: Security token.
        age: AFF4 age specification. Only get hits corresponding to the given age
          spec. Should be aff4.NEWEST_TIME or a time range given as a tuple
          (start, end) in microseconds since Jan 1st, 1970. If just a microseconds
          value is given it's treated as the higher end of the range, i.e. (0,
          age). See aff4.FACTORY.ParseAgeSpecification for details.
  
      Yields:
        (hash, client_files) tuples, where hash is a FileStoreHash instance and
        client_files is a list of RDFURN's corresponding to client files that
        have the hash.
  
      Raises:
        ValueError: if age was set to aff4.ALL_TIMES.
      """
      if age == aff4.ALL_TIMES:
        raise ValueError("age==aff4.ALL_TIMES is not supported.")
      timestamp = aff4.FACTORY.ParseAgeSpecification(age)
  
      index_objects = list(aff4.FACTORY.MultiOpen(hashes, token=token))
      index_locations = {}
      for o in index_objects:
        index_locations.setdefault(o.urn, []).append(o.symlink_urn)
      for hash_obj, client_files in data_store.DB.FileHashIndexQueryMultiple(
          index_locations, timestamp=timestamp):
        symlinks = index_locations[hash_obj]
        for original_hash in symlinks:
          hash_obj = original_hash or hash_obj
          yield (FileStoreHash(hash_obj), client_files)