public void incUtteranceWords(String[] units, Boolean[] stresses,
			Boolean[] boundaries, boolean[] trusts) {
		// If we're not using trusts, ignore the trusts passed
		Boolean[] wordsTrusts;
		if (!useTrust || trusts == null) {
			wordsTrusts = null;
		}
		else {
			wordsTrusts = SegUtil.wordsTrusts(trusts, boundaries);
		}

		// Get slices of the stresses and units in this utterance
		Object[][] wordsUnits =
			SegUtil.slicesFromAllBoundaries(units, boundaries);
		Object[][] wordsStresses =
			SegUtil.slicesFromAllBoundaries(stresses, boundaries);

		// Each element of the outer array represents units/stresses for a single word
		for (int i = 0; i < wordsUnits.length; i++) {
			// Reward if no trust info was provided or if trusted
			if (wordsTrusts == null || wordsTrusts[i]) {
				rewardWord(((String[]) wordsUnits[i]), ((Boolean[]) wordsStresses[i]));
			}
		}
	}