public static ArrayList<String> generate(final String statement) {

		final ArrayList<String> noSpaces = new ArrayList<String>();
		for (String split : StringUtilities.split(statement)) {
			if (!split.equals(" ")) {
				noSpaces.add(split);
			}
		}

		final ArrayList<String> cleaned = checkFields(noSpaces);

		double averageWordLength = 0;
		for (final String split : cleaned) {
			averageWordLength += split.length();
		}
		averageWordLength = averageWordLength / cleaned.size();
		averageWordLength = Math.ceil(averageWordLength);

		final ArrayList<String> possibleWords = new ArrayList<String>();
		for (final String split : cleaned) {
			if (split.length() >= averageWordLength) {
				boolean found = false;
				for (final String possibleWord : possibleWords) {
					if (split.equalsIgnoreCase(possibleWord)) {
						found = true;
						break;
					}
				}

				if (!found) {
					possibleWords.add(split.toLowerCase());
				}
			}

			// Only add up to a possibility of max words.
			if (possibleWords.size() == MAX_WORDS) {
				break;
			}
		}

		Collections.sort(possibleWords);

		return possibleWords;
	}