ITextViewer viewer= quickAssistContext.getTextViewer();
ITextViewer viewer= quickAssistContext.getSourceViewer();
	public ICompletionProposal[] computeQuickAssistProposals(IQuickAssistInvocationContext quickAssistContext) {		ITextViewer viewer= quickAssistContext.getTextViewer();		int documentOffset= quickAssistContext.getOffset();		IEditorPart part= fAssistant.getEditor();		int length= viewer != null ? viewer.getSelectedRange().y : 0;		AssistContext context= new AssistContext(null, documentOffset, length);		fgErrorMessage= null;		ArrayList proposals= new ArrayList();		IAnnotationModel model= null;		IEditorInput input= part.getEditorInput();		if (!(input instanceof IStorageEditorInput))			return null;		ITextFileBufferManager manager= FileBuffers.getTextFileBufferManager();		IPath path= null;		try {			path= ((IStorageEditorInput)input).getStorage().getFullPath();			if (path == null)				return null;			manager.connect(path, null);		} catch (CoreException e) {			JavaPlugin.log(e.getStatus());			return null;		}		try {			model= manager.getTextFileBuffer(path).getAnnotationModel();			if (model != null) {				processAnnotations(context, model, proposals);			}			if (proposals.isEmpty()) {				proposals.add(new ChangeCorrectionProposal(CorrectionMessages.NoCorrectionProposal_description, null, 0, null));			}			ICompletionProposal[] res= (ICompletionProposal[]) proposals.toArray(new ICompletionProposal[proposals.size()]);			Arrays.sort(res, new CompletionProposalComparator());			return res;		} finally {			try {				manager.disconnect(path, null);			} catch (CoreException e) {				JavaPlugin.log(e.getStatus());			}		}	}