class_docstr: Checks for tfl custom TensorList kernels.
  
  * Validate conversion through python api with
    `legalize_custom_tensor_list_ops = True`.
  * Validate python bindings for registration through
    `InterpreterWithCustomOps`.
  * Check tensorflow and tensorflow lite output the same data.
code: def test_reserve_element_shape(self, element_shape):
      @tf.function
      def f() -> tf.Tensor:
          l = list_ops.tensor_list_reserve(
              element_shape=tf.TensorShape(element_shape),
              element_dtype=tf.int32,
              num_elements=10,
          )
          return list_ops.tensor_list_element_shape(l, tf.int32)
  
      tfl_out, tf_out = self._get_tfl_tf_outputs(f)
  
      self.assertEqual(tf_out.dtype, tfl_out.dtype)
      self.assertEqual(tf_out.shape, tfl_out.shape)
      self.assertTrue((tf_out == tfl_out).numpy().all())
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow
  from tensorflow.lite.kernels.variants.py import register_list_ops_py
  from tensorflow.lite.python import interpreter
  from tensorflow.python.ops import list_ops
  from tensorflow.python.platform import googletest
label_desc: Use image node_id 10 for calling the ListOpsTest obj's underlying member method code with example usage: obj.test_reserve_element_shape(element_shape) and returns: list_ops