code: def recursive_refs(envs, name):
      refs_by_name = {
          env['name']: set(env['refs'])
          for env in envs
      }
      refs = refs_by_name[name]
      if refs:
          indirect_refs = set(itertools.chain.from_iterable([
              recursive_refs(envs, ref)
              for ref in refs
          ]))
      else:
          indirect_refs = set()
      return set.union(refs, indirect_refs)