protected Collection<SpanExtraction> extractCandidates(ChunkedSentence sent)
throws ExtractorException {
LayeredTokenMatcher m = pattern.matcher(sent);
List<SpanExtraction> results = new ArrayList<SpanExtraction>();
while (m.find()) {
int numFields = m.groupCount();
List<Range> fieldRanges = new ArrayList<Range>();
for (int i = 0; i < numFields; i++) {
int start = m.start(i + 1);
int end = m.end(i + 1);
int len = end - start;