Annotation engines are described for handling annotations added to a base
document. The annotation engines automatically classify the type of
annotations, including, but not limited to: a highlight annotation; a
blob annotation (comprising an enclosing-type annotation); an underline
annotation; a vertical bracket annotation; a call-out annotation; and a
free-note annotation. The annotation engines accept input in the form of
a hierarchical tree of document elements and generate an output in the
form of a hierarchical tree of annotation elements. Among other uses, a
reflow engine can use the output of the annotation engines to properly
reposition annotations within a layout-modified base document.