code: def test_builder_to_backend_programmatic_multiple_axes(
      self, use_cpu_only, backend, rank_and_axes
  ):
      rank, axes = rank_and_axes
      x_shape = np.random.randint(low=1, high=6, size=rank)
      input_placeholders = {"x": mb.placeholder(shape=x_shape)}
      input_values = {"x": np.random.sample(x_shape).astype(np.float32)}
  
      def build(x):
          return mb.expand_dims(x=x, axes=axes)
  
      out_shape = list(x_shape)
      out_rank = rank + len(axes)
      pos_axes = sorted(
          [out_rank + axis if axis < 0 else axis for axis in axes]
      )
      for axis in pos_axes:
          out_shape.insert(axis, 1)
  
      expected_outputs = np.reshape(input_values["x"], out_shape)
      expected_output_types = tuple(out_shape) + (types.fp32,)
  
      run_compare_builder(
          build,
          input_placeholders,
          input_values,
          expected_output_types,
          expected_outputs,
          use_cpu_only=use_cpu_only,
          frontend_only=False,
          backend=backend,
      )
  
imports: from coremltools.converters.mil import testing_reqs
  from coremltools.converters.mil.mil import get_new_symbol, get_new_variadic_symbol
  from coremltools.converters.mil.testing_reqs import *
  from .testing_utils import UNK_SYM, UNK_VARIADIC, run_compare_builder
label_desc: Use image node_id 5 for calling the TestExpandDims obj's underlying member method code with example usage: obj.test_builder_to_backend_programmatic_multiple_axes(use_cpu_only, backend, rank_and_axes) and returns: mb