code: def _test_dense_set_union_multirow_2d(self, dtype):
      a_values = [[9, 1, 5], [2, 4, 3]]
      b_values = [[1, 9], [1, 2]]
      expected_indices = [
          [0, 0],
          [0, 1],
          [0, 2],
          [1, 0],
          [1, 1],
          [1, 2],
          [1, 3],
      ]
      expected_values = _values([1, 5, 9, 1, 2, 3, 4], dtype)
      expected_shape = [2, 4]
      expected_counts = [3, 4]
  
      # Dense to dense.
      a = _constant(a_values, dtype=dtype)
      b = _constant(b_values, dtype=dtype)
      union = self._set_union(a, b)
      self._assert_set_operation(
          expected_indices,
          expected_values,
          expected_shape,
          union,
          dtype=dtype,
      )
      self.assertAllEqual(expected_counts, self._set_union_count(a, b))
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors_impl
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_set_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import sets
  from tensorflow.python.ops import sparse_ops
  from tensorflow.python.platform import googletest
label_desc: Use image node_id 39 for calling the SetOpsTest obj's underlying member method code with example usage: obj._test_dense_set_union_multirow_2d(dtype) without return types