Hi all,
I'm joining here a component diagram of annotation feature.
As you can see on the diagram, AnnotationFeature uses AnnotationTarget
in order to alter both selection (using SelectionService) and document
source (using severals Alterers and IOTargetService).
AnnotationFeature use IOService in order to retrieve/modify/remove
stored annotations.
Once location is computed the module use IOService in order to store
annotations in XWiki DB.
AnnotationMaintainer is used each time a document is modified. It uses a
diff algorithm in order to update annotations location.
I hope this will help you understand the code.
Thanks, Lucien.