termPositions.seek(term.term);
if (matches == null) {
// If this is the first term, collect all matches that intersect
// with the provided initial document set.
Intersection intersection = this.intersectionProvider.get(reader);
matches = new PhraseFilterMatchList(term.docFreq);
while (intersection.advanceToNextIntersection(termPositions)) {
int freq = termPositions.freq();
PhraseFilterIntList list = new PhraseFilterIntList(freq);
for (int i = 0; i < freq; i++) {
list.add(termPositions.nextPosition() - term.offset);
}