Convenience: evaluate expression as boolean (NULL -> false).
bool evalPredicate(Expr e, Map<String, Object?> row) { final v = e.eval(row); return v is bool && v; }