Upgrading is a no-op if you only map JSON onto `string`, `float`, `array` and nested models.

  ### Breaking

  - `symfony/yaml` is now optional. Run `composer require symfony/yaml` if you map YAML
    response bodies; otherwise you get a `MissingDependencyException` that says so.
  - Int-backed enums whose data can be `0`, `'0'` or `false` no longer resolve to `null`.
  - `DateTimeImmutable` properties are parsed with `DATE_FORMAT` instead of the constructor's
    flexible parsing.
  - Malformed data throws `InvalidDataException` where it previously threw `TypeError`, warned,
    or silently produced a blank model.
  - `AutoResolvingArrayModel::key()` returns the array key, not the iteration offset.

  ### Fixed

  - `int` and `bool` properties were never cast and threw `TypeError`.
  - Classes and enums in the global namespace were never resolved.
  - `#[Key(key: '...')]` with a named argument was silently ignored.
  - `$collection[] = $item` wrote to the `""` key instead of appending.
  - `Content-Type: application/json; charset=utf-8` was parsed as YAML.

  ### Added

  - Optional Carbon support: type a property as `Carbon` or `CarbonImmutable` and nothing else.