Public APIs 
- Services not intended for decoration or direct use must be marked with @internaland have an appropriate comment in the docblock why they should not be used or decorated directly.
- Classes marked with @internalneed not be kept compatible for third-party developers. Here the public API can change at any time.
- __constructmethods of services instantiated via DI container are not public API and can be changed at any time.
- __constructfunctions of Data Transfer Objects (DTO), which the developer himself could therefore instantiate (e.g.- CalculatedPrice,- QuantityPriceDefinition), are public API and must be kept backward compatible.