code: def test_spec_has_metadata(self):
      spec = {
          "a": {
              "b": 1,
              "c": 2,
          },
          "d": 3,
          "e": {"a": 2, "metadata": 3},
          "f": 4,
      }
      self.assertTrue(serialization._spec_has_metadata(spec))
      self.assertTrue(
          serialization._spec_has_metadata(
              {
                  "driver": "zarr",
                  "kvstore": "gfile",
                  "metadata": {"chunks": 4, "shape": (32, 64)},
                  "one_more": "thing",
              }
          )
      )
  
imports: import asyncio
  import math
  from functools import partial
  import os
  import pathlib
  import tracemalloc
  from absl.testing import absltest
  from absl.testing import parameterized
  import jax
  from jax._src import test_util
  from jax import config
  from jax._src import array
  from jax.sharding import NamedSharding, GSPMDSharding
  from jax.sharding import PartitionSpec
  from jax.experimental.array_serialization import serialization
  import numpy
  import tensorstore
  import unittest
label_desc: Use image node_id 8 for calling the CheckpointTest obj's underlying member method code with example usage: obj.test_spec_has_metadata() without return types