code: def convert(self):
      prog = Program()
      if len(self.graph_stack) == 0:
          raise ValueError("At least one TF function must be present")
      if self.graph_stack[0] != "main":
          msg = "TF root graph must be named 'main'. Got {}"
          raise ValueError(msg.format(self.graph_stack[0]))
      graph = self.tfssa.functions["main"].graph
      for g_name in self.graph_stack[1:]:
          self.context.add_graph(
              g_name, self.tfssa.functions[g_name].graph
          )
      self.convert_main_graph(prog, graph)
  
      # Apply TF frontend passes on Program. These passes are different
      # from passes applied to tfssa.
      self.tensorflow_passes(prog)
  
      return prog
  
imports: import six
  import logging
  from coremltools.converters.mil.input_types import InputType, TensorType, ImageType, RangeDim, _get_shaping_class
  from coremltools.converters.mil.input_types import Shape
  from coremltools.converters.mil.mil.var import Var
  from coremltools.converters.mil.mil import get_new_symbol
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic
  from coremltools.converters.mil.mil import types
  from .basic_graph_ops import topsort, simple_topsort
  from .convert_utils import convert_graph
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import Program
  from coremltools.converters.mil.mil import Function
  from .ssa_passes.tf_passes import tensorflow_passes
  from coremltools.converters._profile_utils import _profile
label_desc: Use image node_id 8 for calling the TFConverter obj's underlying member method code with example usage: obj.convert() and returns: prog