Point taken for Guice - other frameworks are bit unfair since they're all Guice derivatives.

This class has type and annotations which is why `AnnotatedType` seems a good name to me.

By calling it `Key` I think we mix what is it and what it is used for ie we have `(Key key)` in the code.

I would prefer to have a different name for the class but usage are still ok to refer to `key`.

> If somebody mentioned AnnotatedType in context of DI, I'd have no clue what it is nor what it's it's purpose

Then you probably want to update `Key type` below in this PR :)

Anyway I think I can deal with it and let the majority win.