Bug 58509 [spell checking] ConcurrentModif.Exception in spelling plugin
20040407 Got this printed in the console (not .log!) java.util.ConcurrentModificationException at java.lang.Throwable.<init>(Throwable.java) at java.util.HashMap$HashIterator.nextEntry(HashMap.java) at java.util.HashMap$KeyIterator.next(HashMap.java) at org.eclipse.jdt.internal.ui.text.spelling.engine.DefaultSpellChecker. fireEvent(DefaultSpellChecker.java) at org.eclipse.jdt.internal.ui.text.spelling.engine.DefaultSpellChecker. execute(DefaultSpellChecker.java) at org.eclipse.jdt.internal.ui.text.spelling.SpellReconcileStrategy.reco ncile(SpellReconcileStrategy.java) at org.eclipse.jface.text.reconciler.CompositeReconcilingStrategy.reconc ile(CompositeReconcilingStrategy.java) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.rec oncile(JavaCompositeReconcilingStrategy.java) at org.eclipse.jface.text.reconciler.MonoReconciler.process (MonoReconcil er.java) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread .run(AbstractReconciler.java)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/spelling/engine/DefaultSpellChecker.java
*/
	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) {
				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));
					}
				}
			}
		}