Return a subiterator whose bounds are defined by the input annotation.
The subiterator will return annotations b s.t. annot < b, annot.getBegin() <= b.getBegin() and annot.getEnd() >= b.getEnd(). For annotations x, y, x < y here is to be interpreted as "x comes before y in the index", according to the rules defined in the description of {@link AnnotationIndex this class}.
This definition implies that annotations b that have the same span as annot may or may not be returned by the subiterator. This is determined by the type priorities; the subiterator will only return such an annotation b if the type of annot precedes the type of b in the type priorities definition. If you have not specified the priority, or if annot and b are of the same type, then the behavior is undefined.
For example, if you an annotation s of type Sentence and an annotation p of type Paragraph that have the same span, and you have defined Paragraph before Sentence in your type priorities, then subiterator(p) will give you an iterator that will return s, but subiterator(s) will give you an iterator that will NOT return p. The intuition is that a Paragraph is conceptually larger than a Sentence, as defined by the type priorities.
Calling subiterator(a) is equivalent to calling subiterator(a, true, true).. See {@link #subiterator(AnnotationFS,boolean,boolean) subiterator(AnnotationFS, boolean, boolean)}.
@param annot Defines the boundaries of the subiterator.
@return A subiterator.