if (impl == null || !Bindings.isVisibleInHierarchy(impl, currPack) || ((curr.getExceptionTypes().length < impl.getExceptionTypes().length) && !Modifier.isFinal(impl.getModifiers()))) {
if (impl == null || !Bindings.isVisibleInHierarchy(impl, currPack)) {
	private static void findUnimplementedInterfaceMethods(ITypeBinding typeBinding, HashSet visited, ArrayList allMethods, IPackageBinding currPack, ArrayList toImplement) {		if (visited.add(typeBinding)) {			IMethodBinding[] typeMethods= typeBinding.getDeclaredMethods();			for (int i= 0; i < typeMethods.length; i++) {				IMethodBinding curr= typeMethods[i];				IMethodBinding impl= findMethodBinding(curr, allMethods);				if (impl == null || !Bindings.isVisibleInHierarchy(impl, currPack) || ((curr.getExceptionTypes().length < impl.getExceptionTypes().length) && !Modifier.isFinal(impl.getModifiers()))) {					if (impl != null)						allMethods.remove(impl);					toImplement.add(curr);					allMethods.add(curr);				}			}			ITypeBinding[] superInterfaces= typeBinding.getInterfaces();			for (int i= 0; i < superInterfaces.length; i++)				findUnimplementedInterfaceMethods(superInterfaces[i], visited, allMethods, currPack, toImplement);		}	}