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_refList) {
				// 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_refList.size()); i++) {
						DictionaryService dictionary = (DictionaryService) m_refToObjMap.get(m_refList.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()]);
		}