code: def lateral_join(self, tree):
      tve = None
      alias = None
  
      for child in tree.children:
          # Rules
          if isinstance(child, Tree):
              if child.data == "table_valued_function":
                  tve = self.visit(child)
              elif child.data == "alias_clause":
                  alias = self.visit(child)
  
      if alias is None:
          err_msg = f"TableValuedFunction {tve.func_expr.name} should have alias."
          logger.error(err_msg)
          raise SyntaxError(err_msg)
  
      join_type = JoinType.LATERAL_JOIN
      return TableRef(
          JoinNode(
              None, TableRef(tve, alias=alias), join_type=join_type
          )
      )
  
imports: from lark import Token, Tree
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.select_statement import SelectStatement
  from evadb.parser.table_ref import Alias, JoinNode, TableRef, TableValuedExpression
  from evadb.parser.types import JoinType
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 9 for calling the TableSources obj's underlying member method code with example usage: obj.lateral_join(tree) and returns: TableRef