code: def union_select(self, tree):
      right_select_statement = None
      union_all = False
  
      statement_id = 0
      for child in tree.children:
          if isinstance(child, Tree):
              if child.data.endswith("select"):
                  if statement_id == 0:
                      left_select_statement = self.visit(child)
                  elif statement_id == 1:
                      right_select_statement = self.visit(child)
                  statement_id += 1
          # Token
          elif isinstance(child, Token):
              if child.value == "ALL":
                  union_all = True
  
      # FIX: Complex logic
      if left_select_statement is not None:
          assert (
              left_select_statement.union_link is None
          ), "Checking for the correctness of the operator"
  
          # We need to check the correctness for union operator.
          # Here when parsing or later operator, plan?
          left_select_statement.union_link = right_select_statement
  
          if union_all is False:
              left_select_statement.union_all = False
          else:
              left_select_statement.union_all = True
  
      return left_select_statement
  
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 12 for calling the TableSources obj's underlying member method code with example usage: obj.union_select(tree) and returns: left_select_statement