ICompletionProposal proposal= new PositionBasedCompletionProposal(v.name, pos, replacementLength, getImage(v.descriptor), v.name, null, null) {
ICompletionProposal proposal= new PositionBasedCompletionProposal(v.name, pos, replacementLength, getImage(v.descriptor), displayString, null, null) {
	public ICompletionProposal[] parameterProposals(String paramPackage, String paramType, String paramName, Position pos, IDocument document) throws JavaModelException {				if (fVariables == null) {			VariableCollector variableCollector= new VariableCollector();			fVariables= variableCollector.collect(fCodeAssistOffset, fCompilationUnit);		}				fIsTemplateMatch= false;				List typeMatches= findFieldsMatchingType(fVariables, paramPackage, paramType);		orderMatches(typeMatches, paramName);		if (typeMatches == null)			return new ICompletionProposal[0];					ICompletionProposal[] ret= new ICompletionProposal[typeMatches.size() + (fIsTemplateMatch ? 1 : 0)];		int i= 0; int replacementLength= 0;		for (Iterator it= typeMatches.iterator(); it.hasNext();) {			Variable v= (Variable)it.next();			if (i == 0) {				v.alreadyMatched= true;				replacementLength= v.name.length();			}						// bump priority for collection-toArrays if there are no assignable arrays			if (fIsTemplateMatch && !isArrayType(v.typeName)) {				ret[i++]= createTemplateProposal(document, pos, paramType);				fIsTemplateMatch= false;			}						final char[] triggers= new char[v.triggerChars.length + 1];			System.arraycopy(v.triggerChars, 0, triggers, 0, v.triggerChars.length);			triggers[triggers.length - 1]= ';';			ICompletionProposal proposal= new PositionBasedCompletionProposal(v.name, pos, replacementLength, getImage(v.descriptor), v.name, null, null) {				public char[] getTriggerCharacters() {					return triggers;				}			};			ret[i++]= proposal;		}		if (fIsTemplateMatch) {			ret[i++]= createTemplateProposal(document, pos, paramType);		}				return ret;	}