final boolean ignoreNonLetters= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_NON_LETTERS); final boolean ignoreSingleLetters= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_SINGLE_LETTERS);  iterator.setIgnoreSingleLetters(ignoreSingleLetters);  Iterator iter= fDictionaries.iterator(); while (iter.hasNext()) ((ISpellDictionary)iter.next()).setStripNonLetters(ignoreNonLetters);
	public void execute(final ISpellCheckIterator iterator) {		final boolean ignoreDigits= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_DIGITS);		final boolean ignoreMixed= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_MIXED);		final boolean ignoreSentence= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_SENTENCE);		final boolean ignoreUpper= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_UPPER);		final boolean ignoreURLS= fPreferences.getBoolean(ISpellCheckPreferenceKeys.SPELLING_IGNORE_URLS);		String word= null;		boolean starts= false;		while (iterator.hasNext()) {			word= (String)iterator.next();			if (word != null) {				// synchronizing is necessary as this is called inside the reconciler				if (!fIgnored.contains(word)) {					starts= iterator.startsSentence();					if (!isCorrect(word)) {					    boolean isMixed=  isMixedCase(word, true);					    boolean isUpper= isUpperCase(word);					    boolean isDigits= isDigits(word);					    boolean isURL= isUrl(word);					    if ( !ignoreMixed && isMixed || !ignoreUpper && isUpper || !ignoreDigits && isDigits || !ignoreURLS && isURL || !(isMixed || isUpper || isDigits || isURL))					        fireEvent(new SpellEvent(this, word, iterator.getBegin(), iterator.getEnd(), starts, false));					} else {						if (!ignoreSentence && starts && Character.isLowerCase(word.charAt(0)))							fireEvent(new SpellEvent(this, word, iterator.getBegin(), iterator.getEnd(), true, true));					}				}			}		}	}