This is a major release featuring some user-facing API changes. It is hoped that for most users, these changes are relatively minor.
What's Changed
* implement state charts by andlaus in https://github.com/mercedes-benz/odxtools/pull/126
* Various small writing fixes by andlaus in https://github.com/mercedes-benz/odxtools/pull/127
* - resolved unused import in write_pdx_file.py by louwersj in https://github.com/mercedes-benz/odxtools/pull/128
* Fix/max length parsing by JoSglch in https://github.com/mercedes-benz/odxtools/pull/131
* Untangle Diaglayer (1 of X) by andlaus in https://github.com/mercedes-benz/odxtools/pull/132
* CommunicationParameterRef: add a `_build_odxlinks()` method by andlaus in https://github.com/mercedes-benz/odxtools/pull/134
* Untangle DiagLayer (2 of X) by andlaus in https://github.com/mercedes-benz/odxtools/pull/133
* give all objects full sovereignty over their `OdxLinkId`s by andlaus in https://github.com/mercedes-benz/odxtools/pull/135
* clean up the `ParentRef` class by andlaus in https://github.com/mercedes-benz/odxtools/pull/136
* Refactor init spinoffs by andlaus in https://github.com/mercedes-benz/odxtools/pull/141
* refactor the initialization and reference resolution mechanism by andlaus in https://github.com/mercedes-benz/odxtools/pull/137
* diaglayer: refactor the communication parameter handling by andlaus in https://github.com/mercedes-benz/odxtools/pull/142
* DiagLayer: group the methods more logically by andlaus in https://github.com/mercedes-benz/odxtools/pull/143
* Untangle diaglayer (Part 6) by andlaus in https://github.com/mercedes-benz/odxtools/pull/145
* DiagLayer: refactor the value inheritance mechanism by andlaus in https://github.com/mercedes-benz/odxtools/pull/146
New Contributors
* louwersj made their first contribution in https://github.com/mercedes-benz/odxtools/pull/128
* JoSglch made their first contribution in https://github.com/mercedes-benz/odxtools/pull/131
**Full Changelog**: https://github.com/mercedes-benz/odxtools/compare/3.0.2...4.0.0