ITypeHierarchy hierarchy= getSuperType().newTypeHierarchy(new SubProgressMonitor(pm, 1));
ITypeHierarchy hierarchy= getSuperTypeHierarchy(new SubProgressMonitor(pm, 1));
	private void checkMethodReturnTypes(IProgressMonitor pm, RefactoringStatus result, Set notDeletedMembers) throws JavaModelException {		ITypeHierarchy hierarchy= getSuperType().newTypeHierarchy(new SubProgressMonitor(pm, 1));		Map mapping= getMatchingMembersMapping(hierarchy, hierarchy.getType());//IMember -> Set of IMembers		for (int i= 0; i < fElementsToPullUp.length; i++) {			if (fElementsToPullUp[i].getElementType() != IJavaElement.METHOD)				continue;			IMethod method= (IMethod)fElementsToPullUp[i];			String returnType= getReturnTypeName(method);			for (Iterator iter= ((Set)mapping.get(method)).iterator(); iter.hasNext();) {				IMethod matchingMethod= (IMethod) iter.next();				if (!notDeletedMembers.contains(matchingMethod))					continue;				if (returnType.equals(getReturnTypeName(matchingMethod)))					continue;				String msg= "Method '" + JavaElementUtil.createMethodSignature(matchingMethod) + "' declared in type'"									 + matchingMethod.getDeclaringType().getFullyQualifiedName()									 + "' has a different return type than its pulled up counterpart, which will result in compile errors if you proceed." ;				result.addError(msg, createContext(Refactoring.getResource(matchingMethod), matchingMethod.getNameRange()));				}		}	}