code: def visit_and_update(self, visitor_fn):
          
          new_predicate = self.predicate.visit_and_update(visitor_fn)
          new_if_true = self.if_true.visit_and_update(visitor_fn)
          new_if_false = self.if_false.visit_and_update(visitor_fn)
  
          if any((new_predicate is not self.predicate,
                  new_if_true is not self.if_true,
                  new_if_false is not self.if_false)):
              return visitor_fn(TernaryConditional(new_predicate, new_if_true, new_if_false))
          else:
              return visitor_fn(self)
docs: Create an updated version (if needed) of TernaryConditional via the visitor pattern.