default boolean contains(Predicate<Expression> filter) {
    if (filter.test(this)) {
      return true;
    } else {
      return switch (this) {
        case Not(var child) -> child.contains(filter);
        case Or(var children) -> children.stream().anyMatch(child -> child.contains(filter));
        case And(var children) -> children.stream().anyMatch(child -> child.contains(filter));
        default -> false;
      };
    }
  }
Returns true if this expression or any subexpression matches {@code filter}.
planetiler-core/src/main/java/com/onthegomap/planetiler/expression/Expression.java