code: def handle_bind_extract_object_function(
      node: FunctionExpression, binder_context: StatementBinder
  ):
      """Handles the binding of extract_object function.
          1. Bind the source video data
          2. Create and bind the detector function expression using the provided name.
          3. Create and bind the tracker function expression.
              Its inputs are id, data, output of detector.
          4. Bind the EXTRACT_OBJECT function expression and append the new children.
          5. Handle the alias and populate the outputs of the EXTRACT_OBJECT function
      Args:
          node (FunctionExpression): The function expression representing the extract object operation.
          binder_context (StatementBinder): The binder object used to bind expressions in the statement.
      Raises:
          AssertionError: If the number of children in the `node` is not equal to 3.
      """
      assert (
          len(node.children) == 3
      ), f"Invalid arguments provided to {node}. Example correct usage, (data, Detector, Tracker)"
  
      # 1. Bind the source video
      video_data = node.children[0]
      binder_context.bind(video_data)
  
      # 2. Construct the detector
      # convert detector to FunctionExpression before binding
      # eg. YoloV5 -> YoloV5(data)
      detector = FunctionExpression(None, node.children[1].name)
      detector.append_child(video_data.copy())
      binder_context.bind(detector)
  
      # 3. Construct the tracker
      # convert tracker to FunctionExpression before binding
      # eg. ByteTracker -> ByteTracker(id, data, labels, bboxes, scores)
      tracker = FunctionExpression(None, node.children[2].name)
      # create the video id expression
      columns = get_video_table_column_definitions()
      tracker.append_child(
          TupleValueExpression(
              name=columns[1].name, table_alias=video_data.table_alias
          )
      )
      tracker.append_child(video_data.copy())
      binder_context.bind(tracker)
      # append the bound output of detector
      for obj in detector.output_objs:
          col_alias = "{}.{}".format(
              obj.function_name.lower(), obj.name.lower()
          )
          child = TupleValueExpression(
              obj.name,
              table_alias=obj.function_name.lower(),
              col_object=obj,
              col_alias=col_alias,
          )
          tracker.append_child(child)
  
      # 4. Bind the EXTRACT_OBJECT expression and append the new children.
      node.children = []
      node.children = [video_data, detector, tracker]
  
      # 5. assign the outputs of tracker to the output of extract_object
      node.output_objs = tracker.output_objs
      node.projection_columns = [
          obj.name.lower() for obj in node.output_objs
      ]
  
      # 5. resolve alias based on the what user provided
      # we assign the alias to tracker as it governs the output of the extract object
      resolve_alias_table_value_expression(node)
      tracker.alias = node.alias
  
file_path: evadb/evadb/binder/function_expression_binder.py
imports: from pathlib import Path
  from evadb.binder.binder_utils import BinderError, extend_star, resolve_alias_table_value_expression
  from evadb.binder.statement_binder import StatementBinder
  from evadb.catalog.catalog_utils import get_metadata_properties, get_video_table_column_definitions
  from evadb.configuration.constants import EvaDB_INSTALLATION_DIR
  from evadb.executor.execution_context import Context
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.types import FunctionType
  from evadb.third_party.huggingface.binder import assign_hf_function
  from evadb.utils.generic_utils import load_function_class_from_file, string_comparison_case_insensitive
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 2 for calling a global function with example usage: handle_bind_extract_object_function(node, binder_context) without return types