/// The `RewriterStats` struct is used to track various metrics and statistics related to the rewriting
/// of a model using a set of rules. These statistics can be used for performance monitoring, debugging,
/// and optimization purposes. The structure supports optional fields, allowing selective tracking of data
/// - `#[skip_serializing_none]`: Skips serializing fields that have a value of `None`, resulting in cleaner JSON output.
/// - `#[serde(rename_all = "camelCase")]`: Uses camelCase for all serialized field names, adhering to common JSON naming conventions.
/// - An attempt is counted each time a rule is evaluated, regardless of whether it was successfully applied.
/// - A successful application means the rule was successfully applied to transform the expression or constraint.
/// - This struct is intended to be used in contexts where tracking the performance and behavior of rule-based
/// rewriting systems is necessary. It is designed to be easily serialized and deserialized to/from JSON, making it