public void process(Context c, Sentence s) {
		Intervals clauses = new Intervals();
		int low = Integer.MAX_VALUE;
		int high = Integer.MIN_VALUE;
		boolean hasVerb = false;
		for (Peek3Iterator<Interval> it = peek3(s.get(Features.PHRASES)); it.hasNext();) {
			Interval phrase = it.next();
			low = Math.min(phrase.low(), low);
			high = Math.max(phrase.high(), high);
			hasVerb = hasVerb || phrase.has(PHRASE_TYPE, PhraseType.VerbPhrase);
			if (hasVerb && !isPotentialBreak(s, it.peek2())) {
				if (isEnding(s, it.peek()) || 
					isCommaBreak(s, it.peek(), it.peek2(), it.peek3())) {
					clauses.add(low, high);
					low = Integer.MAX_VALUE;
					high = Integer.MIN_VALUE;
					hasVerb = false;
					it.next(); // skip the break punctuation (not part of either clause)
				}
			}
		}
		if (low < high) {
			// bit of a hack: ignore punctuation at end
			if ((low < (high-1)) || !s.token(low).has(CLASS, Punctuation))
				clauses.add(low, high);
		}
		s.set(Features.CLAUSES, clauses);
	}