#3 Injected supertype constraint checks type to be injected. New
instance or a singleton are created based on injection descriptor
preference.