- This one is a bit more interesting than the previous ones. I think I came up with a rather nice and versatile design.
- Annotation providers are registered using a new extension point. They must be identified by the annotation name, and the implementation details (plugin/class).
- The class must implement a base class. It has documentation on the assumptions and guarantees.
- The type checker searches for a registered provider for the annotation, and then checks it using that provider.
- Best to review per commit.