ASTNode nameNode= problem.getCoveredNode(context);
ASTNode nameNode= problem.getCoveredNode(astRoot);
	private static void doMoreArguments(IAssistContext context, IProblemLocation problem, List arguments, ITypeBinding[] argTypes, IMethodBinding methodBinding, Collection proposals) throws CoreException {		ITypeBinding[] paramTypes= methodBinding.getParameterTypes();		int k= 0, nSkipped= 0;		int diff= argTypes.length - paramTypes.length;		int[] indexSkipped= new int[diff];		for (int i= 0; i < argTypes.length; i++) {			if (k < paramTypes.length && TypeRules.canAssign(argTypes[i], paramTypes[k])) {				k++; // match			} else {				if (nSkipped >= diff) {					return; // too different				} 				indexSkipped[nSkipped++]= i;			}		}		ITypeBinding declaringType= methodBinding.getDeclaringClass();		ICompilationUnit cu= context.getCompilationUnit();		CompilationUnit astRoot= context.getASTRoot();				ASTNode nameNode= problem.getCoveredNode(context);				// remove arguments		{			ASTNode selectedNode= problem.getCoveringNode(context);			ASTRewrite rewrite= new ASTRewrite(selectedNode.getParent());						for (int i= diff - 1; i >= 0; i--) {				rewrite.markAsRemoved((Expression) arguments.get(indexSkipped[i]));			}			String[] arg= new String[] { getMethodSignature(methodBinding, false) };			String label;			if (diff == 1) {				label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.removeargument.description", arg); //$NON-NLS-1$			} else {				label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.removearguments.description", arg); //$NON-NLS-1$			}						Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_REMOVE);			ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, context.getCompilationUnit(), rewrite, 8, image);			proposal.ensureNoModifications();			proposals.add(proposal);						}				// add parameters		if (declaringType.isFromSource()) {			ICompilationUnit targetCU= ASTResolving.findCompilationUnitForBinding(cu, astRoot, declaringType);			if (targetCU != null) {				ChangeDescription[] changeDesc= new ChangeDescription[argTypes.length];				ITypeBinding[] changeTypes= new ITypeBinding[diff];				for (int i= diff - 1; i >= 0; i--) {					int idx= indexSkipped[i];					Expression arg= (Expression) arguments.get(idx);					String name= arg instanceof SimpleName ? ((SimpleName) arg).getIdentifier() : null;					ITypeBinding newType= Bindings.normalizeTypeBinding(argTypes[idx]);					if (newType == null) {						newType= astRoot.getAST().resolveWellKnownType("java.lang.Object"); //$NON-NLS-1$					}					changeDesc[idx]= new InsertDescription(newType, name);					changeTypes[i]= newType;				}				String[] arg= new String[] { getMethodSignature(methodBinding, !cu.equals(targetCU)), getTypeNames(changeTypes) };				String label;				if (methodBinding.isConstructor()) {					if (diff == 1) {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.addparam.constr.description", arg); //$NON-NLS-1$					} else {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.addparams.constr.description", arg); //$NON-NLS-1$					}										} else {					if (diff == 1) {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.addparam.description", arg); //$NON-NLS-1$					} else {						label= CorrectionMessages.getFormattedString("UnresolvedElementsSubProcessor.addparams.description", arg); //$NON-NLS-1$					}				}					Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_ADD);				ChangeMethodSignatureProposal proposal= new ChangeMethodSignatureProposal(label, targetCU, nameNode, methodBinding, changeDesc, 5, image);				proposals.add(proposal);			}		}			}