class_docstr: Cast each param value to the respective parameter's type/format and
  to a flattened version of the hierarchical search space, if applicable.
  
  This is a default transform that should run across all models.
  
  NOTE: In case where searh space is hierarchical and this transform is
  configured to flatten it:
    * All calls to `Cast.transform_...` transform Ax objects defined in
      terms of hierarchical search space, to their definitions in terms of
      flattened search space.
    * All calls to `Cast.untransform_...` cast Ax objects back to a
      hierarchical search space.
    * The hierarchical search space is seen as the "original" search space,
      and the flattened search space –– as "transformed".
  
  Transform is done in-place for casting types, but objects are copied
  during flattening of- and casting to the hierarchical search space.
class_docstr_tok: ["Cast","each","param","value","to","the","respective","parameter","'s","type\/format","and","to","a","flattened","version","of","the","hierarchical","search","space",",","if","applicable",".","This","is","a","default","transform","that","should","run","across","all","models",".","NOTE",":","In","case","where","searh","space","is","hierarchical","and","this","transform","is","configured","to","flatten","it",":","*","All","calls","to","`","Cast.transform_","...","`","transform","Ax","objects","defined","in","terms","of","hierarchical","search","space",",","to","their","definitions","in","terms","of","flattened","search","space",".","*","All","calls","to","`","Cast.untransform_","...","`","cast","Ax","objects","back","to","a","hierarchical","search","space",".","*","The","hierarchical","search","space","is","seen","as","the","``","original","''","search","space",",","and","the","flattened","search","space","\u2013\u2013","as","``","transformed","''",".","Transform","is","done","in-place","for","casting","types",",","but","objects","are","copied","during","flattening","of-","and","casting","to","the","hierarchical","search","space","."]
docstr: Flattens the hierarchical search space and returns the flat
  ``SearchSpace`` if this transform is configured to flatten hierarchical
  search spaces. Does nothing if the search space is not hierarchical.
  
  NOTE: All calls to `Cast.transform_...` transform Ax objects defined in
  terms of hierarchical search space, to their definitions in terms of
  flattened search space. All calls to `Cast.untransform_...` cast Ax
  objects back to a hierarchical search space.
  
  Args:
      search_space: The search space to flatten.
  
  Returns: transformed search space.
docstr_tok: ["Flattens","the","hierarchical","search","space","and","returns","the","flat","``","SearchSpace","``","if","this","transform","is","configured","to","flatten","hierarchical","search","spaces",".","Does","nothing","if","the","search","space","is","not","hierarchical",".","NOTE",":","All","calls","to","`","Cast.transform_","...","`","transform","Ax","objects","defined","in","terms","of","hierarchical","search","space",",","to","their","definitions","in","terms","of","flattened","search","space",".","All","calls","to","`","Cast.untransform_","...","`","cast","Ax","objects","back","to","a","hierarchical","search","space",".","Args",":","search_space",":","The","search","space","to","flatten",".","Returns",":","transformed","search","space","."]
code: def _transform_search_space(
      self, search_space: SearchSpace
  ) -> SearchSpace:
      """Flattens the hierarchical search space and returns the flat
      ``SearchSpace`` if this transform is configured to flatten hierarchical
      search spaces. Does nothing if the search space is not hierarchical.
  
      NOTE: All calls to `Cast.transform_...` transform Ax objects defined in
      terms of hierarchical search space, to their definitions in terms of
      flattened search space. All calls to `Cast.untransform_...` cast Ax
      objects back to a hierarchical search space.
  
      Args:
          search_space: The search space to flatten.
  
      Returns: transformed search space.
      """
      if not self.flatten_hss:
          return search_space
      return checked_cast(
          HierarchicalSearchSpace, search_space
      ).flatten()
  
file_path: Ax/ax/modelbridge/transforms/cast.py
imports: from typing import List, Optional, TYPE_CHECKING
  from ax.core.observation import Observation, ObservationFeatures
  from ax.core.search_space import HierarchicalSearchSpace, SearchSpace
  from ax.modelbridge.transforms.base import Transform
  from ax.models.types import TConfig
  from ax.utils.common.typeutils import checked_cast, not_none
label_desc: Use image node_id 2 for calling the Cast obj's underlying member method code with example usage: obj._transform_search_space(search_space) and returns: checked_cast, search_space