code: def cached_make_env(make_env):
      
      if make_env not in CACHED_ENVS:
          env = make_env()
          CACHED_ENVS[make_env] = env
      return CACHED_ENVS[make_env]
docs: Only creates a new environment from the provided function if one has not yet already been
      created. This is useful here because we need to infer certain properties of the env, e.g.
      its observation and action spaces, without any intend of actually using it.