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.