code: def testBijector(self):
      x = [
          np.array([4.0, 3.0, 3.0]).astype(np.float32),
          np.array([0.0, -5.0]).astype(np.float32),
      ]
      op = self.build_operator()
      y = self.evaluate(op.matvec(x))
      ldj = self.evaluate(op.log_abs_determinant())
  
      bijector = (
          scale_matvec_linear_operator.ScaleMatvecLinearOperatorBlock(
              scale=op, validate_args=True
          )
      )
      self.assertStartsWith(
          bijector.name, "scale_matvec_linear_operator_block"
      )
  
      f_x = bijector.forward(x)
      self.assertAllClose(y, self.evaluate(f_x))
  
      inv_y = self.evaluate(bijector.inverse(y))
      self.assertAllClose(x, inv_y)
  
      # Calling `inverse` on an output of `bijector.forward` (that is equal to
      # `y`) is a cache hit and returns the original, non-broadcasted input `x`.
      for x_, z_ in zip(x, bijector.inverse(f_x)):
          self.assertIs(x_, z_)
  
      ldj_ = self.evaluate(
          bijector.forward_log_det_jacobian(x, event_ndims=[1, 1])
      )
      self.assertAllClose(ldj, ldj_)
      self.assertEmpty(ldj_.shape)
  
      self.assertAllClose(
          ldj_,
          self.evaluate(
              -bijector.inverse_log_det_jacobian(y, event_ndims=[1, 1])
          ),
      )
  
imports: import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import scale_matvec_linear_operator
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 1 for calling the _ScaleMatvecLinearOperatorBlockTest obj's underlying member method code with example usage: obj.testBijector() without return types