if (findMethod(curr, allMethods) == null) { String newStub= genStub(type, curr, imports);
IMethod impl= findMethod(curr, allMethods); if (impl == null || curr.getExceptionTypes().length < impl.getExceptionTypes().length) {   String newStub= genStub(type, curr, false, true, imports);
	public static void evalUnimplementedMethods(IType type, ITypeHierarchy hierarchy, List newMethods, IImportsStructure imports) throws JavaModelException {		List allMethods= new ArrayList();		IMethod[] typeMethods= type.getMethods();		for (int i= 0; i < typeMethods.length; i++) {			IMethod curr= typeMethods[i];			if (!curr.isConstructor() && !Flags.isStatic(curr.getFlags())) {				allMethods.add(curr);			}		}		IType[] superTypes= hierarchy.getAllSuperclasses(type);		for (int i= 0; i < superTypes.length; i++) {			IMethod[] methods= superTypes[i].getMethods();			for (int k= 0; k < methods.length; k++) {				IMethod curr= methods[k];				if (!curr.isConstructor() && !Flags.isStatic(curr.getFlags())) {					if (findMethod(curr, allMethods) == null) {						allMethods.add(curr);					}				}			}		}		for (int i= allMethods.size() - 1; i >= 0; i--) {			IMethod curr= (IMethod) allMethods.get(i);			if (Flags.isAbstract(curr.getFlags()) && !type.equals(curr.getDeclaringType())) {				String newStub= genStub(type, curr, imports);				newMethods.add(newStub);			}		}		IType[] superInterfaces= hierarchy.getAllSuperInterfaces(type);		for (int i= 0; i < superInterfaces.length; i++) {			IMethod[] methods= superInterfaces[i].getMethods();			for (int k= 0; k < methods.length; k++) {				IMethod curr= methods[k];				// binary interfaces can contain static initializers (variable intializations)				// 1G4CKUS				if (!Flags.isStatic(curr.getFlags())) {					if (findMethod(curr, allMethods) == null) {						String newStub= genStub(type, curr, imports);						newMethods.add(newStub);						allMethods.add(curr);					}				}			}		}	}