code: def test_builder_to_backend_symbolic(self, use_cpu_only, backend):
      s0 = get_new_symbol()
      s_len = get_new_symbol()
      s1 = get_new_variadic_symbol()
  
      # Test variadic (rdar://59559656)
      input_placeholders = {
          "x": mb.placeholder(shape=(2, s0)),
          # TODO: variadic (rdar://59559656)
          # "x2": mb.placeholder(shape=(s1, 2)),
          "shape": mb.placeholder(shape=(3,), dtype=types.int32),
          "shape2": mb.placeholder(shape=(s_len,), dtype=types.int32),
      }
  
      def build(x, shape, shape2):
          return [
              mb.reshape(x=x, shape=[2, -1]),
              mb.reshape(x=x, shape=[1, -1]),
              mb.reshape(x=x, shape=[2, 1, 1, -1]),
              # TODO: variadic (rdar://59559656)
              # mb.reshape(x=x2, shape=[2, 1, 1]),
              mb.reshape(x=x, shape=shape),
              mb.reshape(x=x, shape=shape2),
          ]
  
      expected_output_types = [
          (2, s0, types.fp32),
          (1, 2 * s0, types.fp32),
          (2, 1, 1, s0, types.fp32),
          # TODO: variadic (rdar://59559656)
          # (2, 1, 1, types.fp32),
          (UNK_SYM, UNK_SYM, UNK_SYM, types.fp32),
          (UNK_VARIADIC, types.fp32),
      ]
      expected_outputs = [
          np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32),
          np.array([[1, 2, 3, 4, 5, 6]], dtype=np.float32),
          np.array(
              [[[[1.0, 2.0, 3.0]]], [[[4.0, 5.0, 6.0]]]],
              dtype=np.float32,
          ),
          # TODO: variadic (rdar://59559656)
          # np.array([[1, 2, 3],
          #          [4, 5, 6]], dtype=np.float32),
          np.array([[[1, 2, 3]], [[4, 5, 6]]], dtype=np.float32),
          np.array([[[1, 2, 3]], [[4, 5, 6]]], dtype=np.float32),
      ]
  
      input_values = {
          "x": np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32),
          # TODO: variadic (rdar://59559656)
          # "x2": np.array([[[1, 2, 3],[4, 5, 6]]], dtype=np.float32),
          "shape": np.array([2, 1, 3], dtype=np.float32),
          "shape2": np.array([2, 1, 3], dtype=np.float32),
      }
      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 3 for calling the TestReshape obj's underlying member method code with example usage: obj.test_builder_to_backend_symbolic(use_cpu_only, backend) and returns: list