@maiorano84 Thank you for that insight.
I get programming can be open to interpretation, but one of the things I find difficult is what should set() and get() be responsible for in a container? Should it be for defining or managing the instance or both?
Looking at the Symfony package, it seems the definition of a service is managed through setDefinition() and getDefinition() and you set() the already created service and get() the service. The set() method appears to add only the already created instance either by adding one already created (through parameter) or using createService() which returns it.
I'm also trying to understand the difference between register() and setDefinition() methods. Is register() just a wrapper, and if so, why if setDefinition() is clear on intent and not protected/private?