code: def _make_plan(plan_dict):
      
      operator_type = plan_dict["operatorType"]
      identifiers = plan_dict.get("identifiers", [])
      arguments = plan_dict.get("args", [])
      children = [_make_plan(child) for child in plan_dict.get("children", [])]
      if "dbHits" in plan_dict or "rows" in plan_dict:
          db_hits = plan_dict.get("dbHits", 0)
          rows = plan_dict.get("rows", 0)
          return ProfiledPlan(operator_type, identifiers, arguments, children, db_hits, rows)
      else:
          return Plan(operator_type, identifiers, arguments, children)
docs: Construct a Plan or ProfiledPlan from a dictionary of metadata values.
  
      :param plan_dict:
      :return: