public ArrayList<Word> getPrefixWords(Utterance utt, int index) {
		String[] units = utt.getUnits();
		Boolean[] stresses = utt.getStresses();
		ArrayList<Word> prefixWords = new ArrayList<Word>();

		// Reject index if it's too high
		if (index >= units.length || index < 0)
			throw new RuntimeException("Starting index out of range.");

		// Take progressively larger slices of the utterance. Since the
		// slice end index is exclusive, i can go up to units.length
		for (int i = index + 1; i <= units.length; i++) {
			String[] prefixUnits = Arrays.copyOfRange(units, index, i);
			Boolean[] prefixStresses = Arrays.copyOfRange(stresses, index, i);

			// Add to the list if the current prefix is a word with a positive
			// score
			Word w = getWord(prefixUnits, prefixStresses);
			if (w != null && recallWord(w)) prefixWords.add(w);
		}

		return prefixWords;
	}