code: def ite_excavated(self):
          
          if self._excavated is None:
              self._excavated = self._excavate_ite()  # pylint:disable=attribute-defined-outside-init
  
              # we set the flag for the children so that we avoid re-excavating during
              # VSA backend evaluation (since the backend evaluation recursively works on
              # the excavated ASTs)
              self._excavated._excavated = self._excavated
          return self._excavated
docs: Returns an equivalent AST that "excavates" the ITE expressions out as far as possible toward the root of the
          AST, for processing in static analyses.