code: def __init__(
      self,
      root_expr: GroupExpression,
      rule_set: List[Rule],
      optimizer_context: OptimizerContext,
  ):
      self.root_expr = root_expr
      self.rule_set = rule_set
      super().__init__(
          optimizer_context, OptimizerTaskType.TOP_DOWN_REWRITE
      )
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from enum import IntEnum, auto
  from typing import TYPE_CHECKING, List
  from evadb.optimizer.binder import Binder
  from evadb.optimizer.group import Group
  from evadb.optimizer.group_expression import GroupExpression
  from evadb.optimizer.property import PropertyType
  from evadb.optimizer.rules.rules_base import Rule
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 1 to create a new TopDownRewrite object from inherited base classes: OptimizerTask with example: obj = TopDownRewrite(root_expr, rule_set, optimizer_context)