Abstractions for things that work like Guice's Injector or other structures where you pass in a Class and get back an instance of that class.
Instantiator —
Takes an exact type and returns an instance of that type.Named —
Takes a supertype and returns some subtype.