Create an updated version (if needed) of the Filter via the visitor pattern.

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