JavaModelUtil.reconcile(fCompilationUnit);
synchronized (fCompilationUnit) { fCompilationUnit.reconcile(); }
	private String[] guessParameters() throws JavaModelException {		// find matches in reverse order.  Do this because people tend to declare the variable meant for the last		// parameter last.  That is, local variables for the last parameter in the method completion are more		// likely to be closer to the point of codecompletion. As an example consider a "delegation" completion:		// 		// 		public void myMethod(int param1, int param2, int param3) {		// 			someOtherObject.yourMethod(param1, param2, param3);		//		}		// 		// The other consideration is giving preference to variables that have not previously been used in this		// code completion (which avoids "someOtherObject.yourMethod(param1, param1, param1)";		String[] parameters= new String[fParameterNames.length];		if (fCompilationUnit == null) {			for (int i= 0; i != fParameterNames.length; i++)				parameters[i]= new String(fParameterNames[i]);			return parameters;		} else {			JavaModelUtil.reconcile(fCompilationUnit);						ParameterGuesser guesser= new ParameterGuesser(fCodeAssistOffset, fCompilationUnit);			for (int i= fParameterNames.length - 1; i >= 0; i--) {				String parameter= guesser.guessParameterName(					new String(fParamaterTypePackageNames[i]),					new String(fParameterTypeNames[i]),					new String(fParameterNames[i]));				parameters[i]= (parameter == null) ? new String(fParameterNames[i]) : parameter;			}			return parameters;		}			}