Current equality-service implementation
IEqualityService resolves to EqualityService in RsXCoreModule singleton scope. Consumers should resolve the service via RsXCoreInjectionTokens.IEqualityService instead of instantiating the class directly.
The default implementation uses fast-equals with custom object handling. For most objects it performs deep equality. For RxJS Observables, it compares by reference (a === b) to avoid treating separate stream instances as equal by structure.
This service is used by runtime change-detection decisions where rs-x needs to know whether a value is materially changed before propagating updates.