DTO vs entity with withStrictTypeChecking():
  Expecting actual:
    CustomerDto[id=7, name=Asha Patil, email=asha@example.com, address=Address[street=12 MG Road, city=Pune, postcode=411001], tags=[vip, newsletter], createdAt=2026-10-01T10:00:00Z, creditLimit=5000.00]
  to be equal to:
    Customer{id=7, name=Asha Patil, email=asha@example.com, address=Address[street=12 MG Road, city=Pune, postcode=411001], tags=[vip, newsletter], creditLimit=5000.00}
  when recursively comparing field by field, but found the following difference:
  
  Top level actual and expected objects differ:
  - actual value  : CustomerDto[id=7, name=Asha Patil, email=asha@example.com, address=Address[street=12 MG Road, city=Pune, postcode=411001], tags=[vip, newsletter], createdAt=2026-10-01T10:00:00Z, creditLimit=5000.00]
  - expected value: Customer{id=7, name=Asha Patil, email=asha@example.com, address=Address[street=12 MG Road, city=Pune, postcode=411001], tags=[vip, newsletter], creditLimit=5000.00}
  actual and expected are considered different since the comparison enforces strict type check and expected type lab.assertj.domain.Customer is not a subtype of actual type lab.assertj.domain.CustomerDto
  
  The recursive comparison was performed with this configuration:
  - no equals methods were used in the comparison EXCEPT for java JDK types since introspecting JDK types is forbidden in java 17+ (use withEqualsForType to register a specific way to compare a JDK type if you need it)
  - these types were compared with the following comparators:
    - java.lang.Double -> DoubleComparator[precision=1.0E-15]
    - java.lang.Float -> FloatComparator[precision=1.0E-6]
    - java.nio.file.Path -> lexicographic comparator (Path natural order)
  - actual and expected objects and their fields were considered different when of incompatible types (i.e. expected type does not extend actual's type) even if all their fields match, for example a Person instance will never match a PersonDto (call strictTypeChecking(false) to change that behavior).
  - the introspection strategy used was: DefaultRecursiveComparisonIntrospectionStrategy
