I suggest to move firing of ContainerInitialized event from StartMain to the end of Weld.initialize().
- Having this done by Weld.initialize() is more expectable (IMO) than having it restricted to a concrete class.
- With the event fired from the end of initialize(), users who bootstrap Weld on their own would not need to introduce their own "startup", or worse, fire ContainerInitialized on their own.
- Backward compatible - currently only StartMain() fires the event. In case of this change, firing would be removed from StartMain(), so the current behavior would not change. The only case when it would do harm is if user fired ContainerInitialized in their own code. Which they should not - such usage smells