if (fMustLoad) load(getURL());
if (!fLoaded && fMustLoad) fLoaded= load(getURL());
	public Set getProposals(final String word, final boolean sentence) {		try {			if (fMustLoad)				load(getURL());		} catch (MalformedURLException exception) {			// Do nothing		}		final String hash= fHashProvider.getHash(word);		final char[] mutators= fHashProvider.getMutators();		final ArrayList neighborhood= new ArrayList((word.length() + 1) * (mutators.length + 2));		neighborhood.add(hash);		final HashSet candidates= getCandidates(word, sentence, neighborhood);		neighborhood.clear();		char previous= 0;		char next= 0;		char[] characters= word.toCharArray();		for (int index= 0; index < word.length() - 1; index++) {			next= characters[index];			previous= characters[index + 1];			characters[index]= previous;			characters[index + 1]= next;			neighborhood.add(fHashProvider.getHash(new String(characters)));			characters[index]= next;			characters[index + 1]= previous;		}		final String sentinel= word + " "; //$NON-NLS-1$		characters= sentinel.toCharArray();		int offset= characters.length - 1;		while (true) {			for (int index= 0; index < mutators.length; index++) {				characters[offset]= mutators[index];				neighborhood.add(fHashProvider.getHash(new String(characters)));			}			if (offset == 0)				break;			characters[offset]= characters[offset - 1];			--offset;		}		char mutated= 0;		characters= word.toCharArray();		for (int index= 0; index < word.length(); index++) {			mutated= characters[index];			for (int mutator= 0; mutator < mutators.length; mutator++) {				characters[index]= mutators[mutator];				neighborhood.add(fHashProvider.getHash(new String(characters)));			}			characters[index]= mutated;		}		characters= word.toCharArray();		final char[] deleted= new char[characters.length - 1];		for (int index= 0; index < deleted.length; index++)			deleted[index]= characters[index];		next= characters[characters.length - 1];		offset= deleted.length;		while (true) {			neighborhood.add(fHashProvider.getHash(new String(characters)));			if (offset == 0)				break;			previous= next;			next= deleted[offset - 1];			deleted[offset - 1]= previous;			--offset;		}		neighborhood.remove(hash);		final HashSet matches= getCandidates(word, sentence, neighborhood);		if (matches.size() == 0 && candidates.size() == 0)			getCandidates(word, sentence, candidates);		candidates.addAll(matches);		return candidates;	}