ICompletionProposal[] total= new ICompletionProposal[results.length + exactTemplateResults.length + notExactTemplateResults.length]; System.arraycopy(exactTemplateResults, 0, total, 0, exactTemplateResults.length); System.arraycopy(results, 0, total, exactTemplateResults.length, results.length); System.arraycopy(notExactTemplateResults, 0, total, exactTemplateResults.length + results.length, notExactTemplateResults.length);
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);
	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 {			if (unit != null) {							fTemplateEngine.reset(viewer);				fTemplateEngine.complete(unit, documentOffset);			}					} catch (JavaModelException x) {		}								ICompletionProposal[] exactTemplateResults= fTemplateEngine.getExactResults();		ICompletionProposal[] notExactTemplateResults= fTemplateEngine.getNotExactResults();		// concatenate arrays		ICompletionProposal[] total= new ICompletionProposal[results.length + exactTemplateResults.length + notExactTemplateResults.length];		System.arraycopy(exactTemplateResults, 0, total, 0, exactTemplateResults.length);		System.arraycopy(results, 0, total, exactTemplateResults.length, results.length);		System.arraycopy(notExactTemplateResults, 0, total, exactTemplateResults.length + results.length, notExactTemplateResults.length);		return total;	}