public static String[] wordsPredicted(Utterance utt) {
		String[] units = utt.getUnits();
		Boolean[] boundaries = utt.getBoundariesCopy();
		// The output of words is one longer than that boundaries as the first syllable doesn't
		// get a leading boundary
		String[] words = new String[boundaries.length + 1];

		// Seed words with the first unit
		int currWord = 0;
		words[currWord] = units[0];

		// Now build up the remaining words. Note that since units are one ahead
		// of boundaries, indices are offset by one
		for (int i = 0; i < boundaries.length; i++) {
			if (boundaries[i]) {
				// Move the current word to one ahead of the boundaries and
				// start a new word
				currWord = i + 1;
				words[currWord] = units[i + 1];
			}
			else {
				// Add the current unit to the current word. Since units are one ahead
				// of boundaries, offset by one
				words[currWord] += "|" + units[i + 1];
			}
		}

		return words;
	}