Type-aware comparison in FilterX is incorrect for non-bultin types (e.g. otel), because we try to convert them to numbers in _evaluate_type_aware() and they end up being NaNs.
We'll probably need a virtual method for comparison.
a = otel_logrecord();
a == a; # false with otel, true with json