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_set_get(self, f_shape, t_shape, i_write, i_read):
      @tf.function(
          input_signature=[
              tf.TensorSpec(shape=f_shape, dtype=tf.float32)
          ]
      )
      def f(x: tf.Tensor) -> tf.Tensor:
          l = list_ops.tensor_list_reserve(
              element_shape=tf.TensorShape(None),
              element_dtype=tf.float32,
              num_elements=2,
          )
          l = list_ops.tensor_list_set_item(l, i_write, x)
          return list_ops.tensor_list_get_item(l, i_read, tf.float32)
  
      inp = np.ndarray(shape=t_shape, dtype=np.float32)
      inp.fill(1)
      tfl_out, tf_out = self._get_tfl_tf_outputs(f, inp)
  
      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 5 for calling the ListOpsTest obj's underlying member method code with example usage: obj.test_reserve_set_get(f_shape, t_shape, i_write, i_read) and returns: list_ops