private void addMethodStubsToNonAbstractSubclassesOfTargetClass(List concreteSubclasses, CompilationUnit cuNode, CompilationUnit declaringCuNode, OldASTRewrite rewrite, IProgressMonitor pm, RefactoringStatus status) throws CoreException {
private void addMethodStubsToNonAbstractSubclassesOfTargetClass(List concreteSubclasses, CompilationUnit cuNode, CompilationUnit declaringCuNode, ASTRewrite rewrite, IProgressMonitor pm, RefactoringStatus status) throws CoreException {
	private void addMethodStubsToNonAbstractSubclassesOfTargetClass(List concreteSubclasses, CompilationUnit cuNode, CompilationUnit declaringCuNode, OldASTRewrite rewrite, IProgressMonitor pm, RefactoringStatus status) throws CoreException {		IType declaringType= getDeclaringType();		IMethod[] methods= getAbstractMethodsAddedToTargetClass();		IType[] typesToImport= getTypesReferencedInDeclarations(methods, declaringCuNode);		pm.beginTask("", concreteSubclasses.size()); //$NON-NLS-1$		for (Iterator iter= concreteSubclasses.iterator(); iter.hasNext();) {			IType clazz= (IType)iter.next();			if (clazz.equals(declaringType))				continue;			boolean anyStubAdded= false;			TypeDeclaration classToCreateStubIn= ASTNodeSearchUtil.getTypeDeclarationNode(clazz, cuNode);			ICompilationUnit cuToCreateStubIn= clazz.getCompilationUnit();			IProgressMonitor subPm= new SubProgressMonitor(pm, 1);			subPm.beginTask("", methods.length); //$NON-NLS-1$			for (int j= 0; j < methods.length; j++) {				IMethod method= methods[j];				if (null == JavaModelUtil.findMethod(method.getElementName(), method.getParameterTypes(), method.isConstructor(), clazz)){					addStub(method, declaringCuNode, classToCreateStubIn, cuToCreateStubIn, rewrite, new SubProgressMonitor(subPm, 1), status);					anyStubAdded= true;				}			}			subPm.done();			if (anyStubAdded)				addImports(typesToImport, clazz.getCompilationUnit());		}		pm.done();	}