code: def _testNonEmpty(
      self, dtype, adjoint_a, adjoint_b, use_static_shape
  ):
      def CompareNonEmpty(self, a_shape, b_shape):
          self._compare(
              GetRandomNormalInput(a_shape, dtype),
              GetRandomNormalInput(b_shape, dtype),
              adjoint_a,
              adjoint_b,
              static_shape=use_static_shape,
          )
  
      CompareNonEmpty(self, [1, 2, 3], [1, 3, 5])
      CompareNonEmpty(self, [1, 2, 3], [1, 3, 1])
      CompareNonEmpty(self, [1, 1, 3], [1, 3, 5])
      CompareNonEmpty(self, [1, 2, 3], [1, 3, 5])
      CompareNonEmpty(self, [7, 1, 3], [7, 3, 5])
      CompareNonEmpty(self, [7, 2, 3], [7, 3, 1])
      CompareNonEmpty(self, [7, 2, 3], [7, 3, 5])
      CompareNonEmpty(self, [10, 64, 75], [10, 75, 30])
      CompareNonEmpty(self, [5, 7, 2, 3], [5, 7, 3, 5])
  
imports: import numpy
  from tensorflow.python import tf2
  from tensorflow.python.client import session
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradient_checker_v2
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.platform import benchmark
  from tensorflow.python.platform import test
label_desc: Use image node_id 3 for calling the BatchMatmulOpTest obj's underlying member method code with example usage: obj._testNonEmpty(dtype, adjoint_a, adjoint_b, use_static_shape) without return types