code: def helper_param_shapes(self, sample_shape, expected):
      param_shapes = two_piece_student_t.TwoPieceStudentT.param_shapes(
          sample_shape
      )
      df_shape = param_shapes["df"]
      loc_shape = param_shapes["loc"]
      scale_shape = param_shapes["scale"]
      skewness_shape = param_shapes["skewness"]
  
      self.assertAllEqual(expected, self.evaluate(df_shape))
      self.assertAllEqual(expected, self.evaluate(loc_shape))
      self.assertAllEqual(expected, self.evaluate(scale_shape))
      self.assertAllEqual(expected, self.evaluate(skewness_shape))
  
      df = tf.ones(df_shape)
      loc = tf.zeros(loc_shape)
      scale = tf.ones(scale_shape)
      skewness = tf.ones(skewness_shape)
      seed = test_util.test_seed()
      samples = two_piece_student_t.TwoPieceStudentT(
          df, loc, scale, skewness, validate_args=True
      ).sample(seed=seed)
  
      self.assertAllEqual(expected, self.evaluate(tf.shape(samples)))
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import two_piece_student_t
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 3 for calling the _TwoPieceStudentTTest obj's underlying member method code with example usage: obj.helper_param_shapes(sample_shape, expected) without return types