if (null != Checks.findMethod(newName, method.getParameterTypes().length, false, type)) { return true; } IType[] implementingClasses= hier.getImplementingClasses(type); return classesDeclareMethodName(hier, Arrays.asList(hier.getAllClasses()), method, newName) || classesDeclareMethodName(hier, Arrays.asList(implementingClasses), method, newName);
IMethod foundMethod= Checks.findMethod(newName, method.getParameterTypes().length, false, type); if (foundMethod != null) return foundMethod;  IMethod foundInHierarchyClasses= classesDeclareMethodName(hier, Arrays.asList(hier.getAllClasses()), method, newName); if (foundInHierarchyClasses != null) return foundInHierarchyClasses;  IType[] implementingClasses= hier.getImplementingClasses(type); IMethod foundInImplementingClasses= classesDeclareMethodName(hier, Arrays.asList(implementingClasses), method, newName); if (foundInImplementingClasses != null) return foundInImplementingClasses; return null;
	final boolean hierarchyDeclaresMethodName(IProgressMonitor pm, IMethod method, String newName) throws JavaModelException{		IType type= method.getDeclaringType();		ITypeHierarchy hier= type.newTypeHierarchy(pm);		if (null != Checks.findMethod(newName, method.getParameterTypes().length, false, type)) {			return true;		}		IType[] implementingClasses= hier.getImplementingClasses(type);		return classesDeclareMethodName(hier, Arrays.asList(hier.getAllClasses()), method, newName) 			|| classesDeclareMethodName(hier, Arrays.asList(implementingClasses), method, newName);	}