Symfony 3 introduced a [`@required` annotation](https://symfony.com/doc/3.x/service_container/calls.html) (now also an attribute) that allows injecting more services via the setter method apart constructor. At the time, it was good. The goal was to solve circular dependencies: when A needs B, B needs C, and C needs A. But more often than not, I see PHP projects where it got completely out of hand. How to use it right?