BusyIndicator.showWhile(styledText.getDisplay(), new Runnable() { public void run() {
	public String showProposals(final boolean autoActivated) {							if (fKeyListener == null) {			fKeyListener= new KeyListener() {				public void keyPressed(KeyEvent e) {					if (!Helper2.okToUse(fProposalShell))						return;										if (e.character == 0 && e.keyCode == SWT.MOD1) {						// http://dev.eclipse.org/bugs/show_bug.cgi?id=34754						int index= fProposalTable.getSelectionIndex();						if (index >= 0)							selectProposal(index, true);					}													}				public void keyReleased(KeyEvent e) {					if (!Helper2.okToUse(fProposalShell))						return;					if (e.character == 0 && e.keyCode == SWT.MOD1) {						// http://dev.eclipse.org/bugs/show_bug.cgi?id=34754						int index= fProposalTable.getSelectionIndex();						if (index >= 0)							selectProposal(index, false);					}				}			};		}		final StyledText styledText= fViewer.getTextWidget();		if (styledText != null && !styledText.isDisposed())			styledText.addKeyListener(fKeyListener);		BusyIndicator.showWhile(styledText.getDisplay(), new Runnable() {			public void run() {								fInvocationOffset= fViewer.getSelectedRange().x;				// lazily compute proposals//				if (fComputedProposals == null)	fComputedProposals= computeProposals(fContentAssistant.getCompletionPosition());				fComputedProposals= computeProposals(fInvocationOffset);								int count= (fComputedProposals == null ? 0 : fComputedProposals.length);				if (count == 0) {										if (!autoActivated)						styledText.getDisplay().beep();								} else {										if (count == 1 && !autoActivated && fContentAssistant.isAutoInserting())												insertProposal(fComputedProposals[0], (char) 0, 0, fInvocationOffset);										else {											if (fLineDelimiter == null)							fLineDelimiter= styledText.getLineDelimiter();												createProposalSelector();						setProposals(fComputedProposals);						resizeProposalSelector(true);						displayProposals();					}				}			}		});				return getErrorMessage();	}