code: def __str__(self) -> str:
      function_expr = None
      for project_expr in self._project_expr_list:
          if isinstance(project_expr, FunctionExpression):
              function_expr = project_expr
  
      print_str = "CREATE INDEX"
      if self._if_not_exists:
          print_str += " IF NOT EXISTS"
      print_str += f" {self._name}"
      print_str += " ON"
      print_str += f" {self._table_ref.table.table_name}"
      if function_expr is None:
          print_str += f" ({self.col_list[0].name})"
      else:
  
          def traverse_create_function_expression_str(expr):
              if isinstance(expr, TupleValueExpression):
                  return f"{self.col_list[0].name}"
              return f"{expr.name}({traverse_create_function_expression_str(expr.children[0])})"
  
          print_str += f" ({traverse_create_function_expression_str(function_expr)})"
      print_str += f" USING {self._vector_store_type};"
      return print_str
  
imports: from typing import List
  from evadb.catalog.catalog_type import VectorStoreType
  from evadb.expression.abstract_expression import AbstractExpression
  from evadb.expression.function_expression import FunctionExpression
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.create_statement import ColumnDefinition
  from evadb.parser.statement import AbstractStatement
  from evadb.parser.table_ref import TableRef
  from evadb.parser.types import StatementType
label_desc: Use image node_id 2 for calling the CreateIndexStatement obj's underlying member method code with example usage: obj.__str__() and returns: print_str, expr, str, traverse_create_function_expression_str, str, self