See a generic article: How does the code generation work
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/ObjectManager/etc/config.xsd#L140-L145
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/Interception/Config/Config.php#L103
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/Interception/Config/Config.php#L118
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/Config/Reader/Filesystem.php#L158
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/ObjectManager/Config/Mapper/Dom.php#L106-L123
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/ObjectManager/ObjectManager.php#L71
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php#L70
https://github.com/magento/magento2/blob/22629abe10f9c640fe47b6081d57fedccdea8e0f/lib/internal/Magento/Framework/Interception/ObjectManager/Config/Developer.php#L39-L41
See also: https://github.com/magento/magento2/issues/2297
See also:
generated/medatata