public String[] check(String passage) {
		// No misspelled words for an empty string.
		if ((passage == null) || (passage.length() == 0)) {
			return null;
		}

		ArrayList errorList = new ArrayList();

		// Tokenize the passage using spaces and punctionation.
		StringTokenizer st = new StringTokenizer(passage, " ,.!?;:");

		// Lock the service list.
		synchronized (m_svcObjList) {
			// Loop through each word in the passage.
			while (st.hasMoreTokens()) {
				String word = st.nextToken();

				boolean correct = false;

				// Check each available dictionary for the current word.
				for (int i = 0; (!correct) && (i < m_svcObjList.size()); i++) {
					DictionaryService dictionary = (DictionaryService) m_svcObjList.get(i);

					if (dictionary.checkWord(word)) {
						correct = true;
					}
				}

				// If the word is not correct, then add it
				// to the incorrect word list.
				if (!correct) {
					errorList.add(word);
				}
			}
		}

		// Return null if no words are incorrect.
		if (errorList.size() == 0) {
			return null;
		}

		// Return the array of incorrect words.
		return (String[]) errorList.toArray(new String[errorList.size()]);
	}