AddArgumentCorrectionProposal proposal= new AddArgumentCorrectionProposal(label, context.getCompilationUnit(), problem.getCoveredNode(context), arguments, indexSkipped, paramTypes, 8);
AddArgumentCorrectionProposal proposal= new AddArgumentCorrectionProposal(label, context.getCompilationUnit(), nameNode, arguments, indexSkipped, paramTypes, 8);
	private static void doMoreParameters(IAssistContext context, IProblemLocation problem, List arguments, ITypeBinding[] argTypes, IMethodBinding methodBinding, List proposals) throws CoreException {		ITypeBinding[] paramTypes= methodBinding.getParameterTypes();		int k= 0, nSkipped= 0;		int diff= paramTypes.length - argTypes.length;		int[] indexSkipped= new int[diff];		for (int i= 0; i < paramTypes.length; i++) {			if (k < argTypes.length && TypeRules.canAssign(argTypes[k], paramTypes[i])) {				k++; // match			} else {				if (nSkipped >= diff) {					return; // too different				} 				indexSkipped[nSkipped++]= i;			}		}		ITypeBinding declaringType= methodBinding.getDeclaringClass();		ICompilationUnit cu= context.getCompilationUnit();		CompilationUnit astRoot= context.getASTRoot();						// add arguments		{						String[] arg= new String[] { getMethodSignature(methodBinding, false) };			String label;			if (diff == 1) {				label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.addargument.description", arg); //$NON-NLS-1$			} else {				label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.addarguments.description", arg); //$NON-NLS-1$			}						AddArgumentCorrectionProposal proposal= new AddArgumentCorrectionProposal(label, context.getCompilationUnit(), problem.getCoveredNode(context), arguments, indexSkipped, paramTypes, 8);			proposal.setImage(JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_ADD));			proposal.ensureNoModifications();			proposals.add(proposal);						}				// remove parameters		if (declaringType.isFromSource()) {			ICompilationUnit targetCU= ASTResolving.findCompilationUnitForBinding(cu, astRoot, declaringType);			if (targetCU != null) {				ChangeDescription[] changeDesc= new ChangeDescription[paramTypes.length];				ITypeBinding[] changedTypes= new ITypeBinding[diff];				for (int i= diff - 1; i >= 0; i--) {					int idx= indexSkipped[i];					changeDesc[idx]= new RemoveDescription();					changedTypes[i]= paramTypes[idx];				}				String[] arg= new String[] { getMethodSignature(methodBinding, !cu.equals(targetCU)), getTypeNames(changedTypes) };				String label;				if (methodBinding.isConstructor()) {					if (diff == 1) {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.removeparam.constr.description", arg); //$NON-NLS-1$					} else {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.removeparams.constr.description", arg); //$NON-NLS-1$					}				} else {					if (diff == 1) {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.removeparam.description", arg); //$NON-NLS-1$					} else {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.removeparams.description", arg); //$NON-NLS-1$					}									}							Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_REMOVE);				ChangeMethodSignatureProposal proposal= new ChangeMethodSignatureProposal(label, targetCU, astRoot, methodBinding, changeDesc, 1, image);				proposals.add(proposal);			}		}			}