fTemplateEngine.complete(viewer, documentOffset, unit);
fTemplateEngine.complete(viewer, documentOffset, unit, fEditor);
	public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentOffset) {		ICompilationUnit unit= fManager.getWorkingCopy(fEditor.getEditorInput());		IDocument document= viewer.getDocument();		ICompletionProposal[] results= new ICompletionProposal[0];		try {			if (unit != null) {								int offset= documentOffset;				int length= 0;								Point selection= viewer.getSelectedRange();				if (selection.y > 0) {					offset= selection.x;					length= selection.y;				}								CompletionEvaluator evaluator= new CompletionEvaluator(unit, document, offset, length);				results= evaluator.computeProposals();			}		} catch (JavaModelException x) {		}		try {			fTemplateEngine.reset();			fTemplateEngine.complete(viewer, documentOffset, unit);		} catch (JavaModelException x) {		}								ICompletionProposal[] templateResults= fTemplateEngine.getResults();		// concatenate arrays		ICompletionProposal[] total= new ICompletionProposal[results.length + templateResults.length];		System.arraycopy(templateResults, 0, total, 0, templateResults.length);		System.arraycopy(results, 0, total, templateResults.length, results.length);		return total;	}