code: def _bind_tableref(self, node: TableRef):
      if node.is_table_atom():
          # Table
          self._binder_context.add_table_alias(
              node.alias.alias_name,
              node.table.database_name,
              node.table.table_name,
          )
          bind_table_info(self._catalog(), node.table)
      elif node.is_select():
          current_context = self._binder_context
          self._binder_context = StatementBinderContext(self._catalog)
          self.bind(node.select_statement)
          self._binder_context = current_context
          self._binder_context.add_derived_table_alias(
              node.alias.alias_name, node.select_statement.target_list
          )
      elif node.is_join():
          self.bind(node.join_node.left)
          self.bind(node.join_node.right)
          if node.join_node.predicate:
              self.bind(node.join_node.predicate)
      elif node.is_table_valued_expr():
          func_expr = node.table_valued_expr.func_expr
          func_expr.alias = node.alias
          self.bind(func_expr)
          output_cols = get_bound_func_expr_outputs_as_tuple_value_expr(
              func_expr
          )
          self._binder_context.add_derived_table_alias(
              func_expr.alias.alias_name, output_cols
          )
      else:
          raise BinderError(f"Unsupported node {type(node)}")
  
imports: from functools import singledispatchmethod
  from typing import Callable
  from evadb.binder.binder_utils import BinderError, bind_table_info, check_column_name_is_string, check_groupby_pattern, check_table_object_is_groupable, drop_row_id_from_target_list, extend_star, get_bound_func_expr_outputs_as_tuple_value_expr, get_column_definition_from_select_target_list
  from evadb.binder.statement_binder_context import StatementBinderContext
  from evadb.catalog.catalog_type import ColumnType, TableType
  from evadb.catalog.catalog_utils import is_document_table
  from evadb.catalog.sql_config import RESTRICTED_COL_NAMES
  from evadb.expression.abstract_expression import AbstractExpression, ExpressionType
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.create_function_statement import CreateFunctionStatement
  from evadb.parser.create_index_statement import CreateIndexStatement
  from evadb.parser.create_statement import ColumnDefinition, CreateTableStatement
  from evadb.parser.delete_statement import DeleteTableStatement
  from evadb.parser.explain_statement import ExplainStatement
  from evadb.parser.rename_statement import RenameTableStatement
  from evadb.parser.select_statement import SelectStatement
  from evadb.parser.statement import AbstractStatement
  from evadb.parser.table_ref import TableRef
  from evadb.utils.generic_utils import string_comparison_case_insensitive
label_desc: Use image node_id 12 for calling the StatementBinder obj's underlying member method code with example usage: obj._bind_tableref(node) without return types