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 _get_interpreter_from_c_func(self, func):
      concrete_function_list = [func.get_concrete_function()]
  
      converter = tf.lite.TFLiteConverter.from_concrete_functions(
          concrete_function_list
      )
      # Don't allow flex ops.
      converter.target_spec.supported_ops = [
          tf.lite.OpsSet.TFLITE_BUILTINS,
      ]
      converter.allow_custom_ops = True
      converter.legalize_custom_tensor_list_ops = True
      converter._experimental_lower_tensor_list_ops = False
  
      tfl_model = converter.convert()
  
      # Instantiate interpreter with custom tensor list ops.
      interpreter = _interpreter.InterpreterWithCustomOps(
          model_content=tfl_model,
          custom_op_registerers=[
              register_list_ops_py.TFLRegisterListOps
          ],
      )
      return interpreter
  
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 1 for calling the ListOpsTest obj's underlying member method code with example usage: obj._get_interpreter_from_c_func(func) and returns: interpreter