code: def column_declaration(self, tree):
      column_name = None
      data_type = None
      array_type = None
      dimensions = None
      column_constraint_information = None
  
      for child in tree.children:
          if isinstance(child, Tree):
              if child.data == "uid":
                  column_name = self.visit(child)
              elif child.data == "column_definition":
                  (
                      data_type,
                      array_type,
                      dimensions,
                      column_constraint_information,
                  ) = self.visit(child)
  
      if column_name is not None:
          return ColumnDefinition(
              column_name,
              data_type,
              array_type,
              dimensions,
              column_constraint_information,
          )
  
imports: from lark import Tree
  from evadb.catalog.catalog_type import ColumnType, NdArrayType, VectorStoreType
  from evadb.expression.tuple_value_expression import TupleValueExpression
  from evadb.parser.create_index_statement import CreateIndexStatement
  from evadb.parser.create_statement import ColConstraintInfo, ColumnDefinition, CreateDatabaseStatement, CreateJobStatement, CreateTableStatement
  from evadb.parser.table_ref import TableRef
  from evadb.parser.types import ColumnConstraintEnum
label_desc: Use image node_id 3 for calling the CreateTable obj's underlying member method code with example usage: obj.column_declaration(tree) and returns: ColumnDefinition