code: def test_set_global_policy_nested(self):
      def f():
          outer = OuterModule()
          outer_ret = outer()
          return outer_ret, outer.inner_ret, outer.w, outer.inner.w
  
      params, (
          outer_ret,
          inner_ret,
          outer_w,
          inner_w,
      ) = transform_and_run_once(f)
  
      # The return type of the modules should use the output type of the module.
      self.assertEqual(outer_ret, jnp.float32)
      self.assertEqual(inner_ret, jnp.float32)
      # Inside the module we should use the compute type of the policy.
      self.assertEqual(outer_w, jnp.float16)
      self.assertEqual(inner_w, jnp.float32)
      # The parameters returned from init should use the param type of the policy.
      self.assertEqual(params["outer_module"], {"w": jnp.float32})
      self.assertEqual(
          params["outer_module/inner_module"], {"w": jnp.float16}
      )
  
imports: import importlib
  from typing import Optional
  from absl.testing import absltest
  from haiku._src import base
  from haiku._src import conv
  from haiku._src import mixed_precision
  from haiku._src import module
  from haiku._src import test_utils
  from haiku._src import transform
  import jax
  import jax.numpy
  import jmp
label_desc: Use image node_id 13 for calling the MixedPrecisionTest obj's underlying member method code with example usage: obj.test_set_global_policy_nested() and returns: outer_ret,  outer,  outer,  outer