code: public static Class<?> findAnnotationDeclaringClass(Class<? extends Annotation> annotationType, Class<?> clazz) {
  		Assert.notNull(annotationType, "Annotation type must not be null");
  		if (clazz == null || clazz.equals(Object.class)) {
  			return null;
  		}
  		if (isAnnotationDeclaredLocally(annotationType, clazz)) {
  			return clazz;
  		}
  		return findAnnotationDeclaringClass(annotationType, clazz.getSuperclass());
  	}
docs: Find the first {@link Class} in the inheritance hierarchy of the specified {@code clazz}
  (including the specified {@code clazz} itself) which declares an annotation for the
  specified {@code annotationType}, or {@code null} if not found. If the supplied
  {@code clazz} is {@code null}, {@code null} will be returned.
  <p>If the supplied {@code clazz} is an interface, only the interface itself will be checked;
  the inheritance hierarchy for interfaces will not be traversed.
  <p>The standard {@link Class} API does not provide a mechanism for determining which class
  in an inheritance hierarchy actually declares an {@link Annotation}, so we need to handle
  this explicitly.
  @param annotationType the annotation type to look for, both locally and as a meta-annotation
  @param clazz the class on which to check for the annotation (may be {@code null})
  @return the first {@link Class} in the inheritance hierarchy of the specified {@code clazz}
  which declares an annotation for the specified {@code annotationType}, or {@code null}
  if not found
  @see Class#isAnnotationPresent(Class)
  @see Class#getDeclaredAnnotations()
  @see #findAnnotationDeclaringClassForTypes(List, Class)
  @see #isAnnotationDeclaredLocally(Class, Class)