code: def _testParamStaticShapes(self, sample_shape, expected):
      param_shapes = normal_lib.Normal.param_static_shapes(sample_shape)
      mu_shape, sigma_shape = param_shapes["loc"], param_shapes["scale"]
      self.assertEqual(expected, mu_shape)
      self.assertEqual(expected, sigma_shape)
  
imports: import importlib
  import math
  import numpy
  from tensorflow.python.eager import backprop
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.ops.distributions import kullback_leibler
  from tensorflow.python.ops.distributions import normal
  from tensorflow.python.platform import test
  from tensorflow.python.platform import tf_logging
label_desc: Use image node_id 4 for calling the NormalTest obj's underlying member method code with example usage: obj._testParamStaticShapes(sample_shape, expected) without return types