DISCLAIMER: It will not compile successfully. I'm commiting just
to be sure nothing is lost.
First step in refactoring the Annotate Plugin design.