TemplateProposal proposal= new TemplateProposal(templates[i], arguments, start, end);
TemplateProposal proposal= new TemplateProposal(templates[i], arguments, context);
	public void complete(ICompilationUnit sourceUnit, int completionPosition)		throws JavaModelException	{		String source= sourceUnit.getSource();		// inspect context		int end = completionPosition;		int start= guessStart(source, end, fPartitionType);		// handle optional argument		String request= source.substring(start, end);		int index= request.indexOf(ARGUMENTS_BEGIN);		String key;		String[] arguments;		if (index == -1) {			key= request;			arguments= null;		} else {			key= request.substring(0, index);						String allArguments= request.substring(index + 1, request.length() - 1);						List list= new ArrayList();			StringTokenizer tokenizer= new StringTokenizer(allArguments, ","); // $NON-NLS-1$			while (tokenizer.hasMoreTokens()) {				String token= tokenizer.nextToken().trim();				list.add(token);			}						arguments= (String[]) list.toArray(new String[list.size()]);					}		// match context with template		Template[] templates= TemplateSet.getInstance().getMatchingTemplates(key, fPartitionType);		for (int i= 0; i != templates.length; i++) {			TemplateProposal proposal= new TemplateProposal(templates[i], arguments, start, end);						if (templates[i].getName().equals(key)) {				fExactProposals.add(proposal);			} else {				fNotExactProposals.add(proposal);			}		}	}