code: def visit_and_update_expressions(self, visitor_fn):
          
          new_predicate = self.predicate.visit_and_update(visitor_fn)
          if new_predicate is not self.predicate:
              return Filter(new_predicate)
          else:
              return self
docs: Create an updated version (if needed) of the Filter via the visitor pattern.