code: def testHash(self, value1_fn, value2_fn, value3_fn):
      s1 = structure.type_spec_from_value(value1_fn())
      s2 = structure.type_spec_from_value(value2_fn())
      s3 = structure.type_spec_from_value(value3_fn())
      for c1, c2, c3 in zip(
          nest.flatten(s1), nest.flatten(s2), nest.flatten(s3)
      ):
          self.assertEqual(hash(c1), hash(c1))
          self.assertEqual(hash(c1), hash(c2))
          self.assertNotEqual(hash(c1), hash(c3))
          self.assertNotEqual(hash(c2), hash(c3))
  
imports: import collections
  import dataclasses
  import functools
  from absl.testing import parameterized
  import numpy
  import wrapt
  from tensorflow.python.data.kernel_tests import test_base
  from tensorflow.python.data.ops import dataset_ops
  from tensorflow.python.data.util import nest
  from tensorflow.python.data.util import structure
  from tensorflow.python.framework import combinations
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import tensor_array_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.ops.ragged import ragged_tensor_value
  from tensorflow.python.platform import test
  from tensorflow.python.util.compat import collections_abc
label_desc: Use image node_id 5 for calling the StructureTest obj's underlying member method code with example usage: obj.testHash(value1_fn, value2_fn, value3_fn) without return types