@Override
        public Object apply(Object arg) {
            if (arg == null) {
                return null;
            } else if (arg instanceof Expression) {
                return transform((Expression) arg);
            } else if (arg instanceof List) {
                List res = new ArrayList<>();
                for (Object o : (List) arg) {
                    res.add(this.apply(o));
                }
                return res;
            } else {
                return arg;
            }
        }
Runs [[transform]] with `rule` on all expressions present in this query operator.
Users should not expect a specific directionality. If a specific directionality is needed,
transformExpressionsDown or transformExpressionsUp should be used.

@param rule the rule to be applied to every expression in this operator.
indexr-query-opt/src/main/java/io/indexr/query/plan/QueryPlan.java