code: public static Annotation[] jlClassGetAnnotations(Class<?> clazz) {
  		if (TypeRegistry.nothingReloaded) {
  			return clazz.getAnnotations();
  		}
  		ReloadableType rtype = getRType(clazz);
  		//Note: even if class has not been reloaded, it's superclass may have been and this may affect
  		//  the inherited annotations, so we must *not* use 'getReloadableTypeIfHasBeenReloaded' above!
  		if (rtype == null) {
  			return clazz.getAnnotations();
  		}
  
  		Class<?> superClass = clazz.getSuperclass();
  		if (superClass == null) {
  			return jlClassGetDeclaredAnnotations(clazz); //Nothing to inherit so it's ok to call this
  		}
  		Map<Class<? extends Annotation>, Annotation> combinedAnnotations = new HashMap<Class<? extends Annotation>, Annotation>();
  
  		Annotation[] annotationsToAdd = jlClassGetAnnotations(superClass);
  		for (Annotation annotation : annotationsToAdd) {
  			if (isInheritable(annotation)) {
  				combinedAnnotations.put(annotation.annotationType(), annotation);
  			}
  		}
  
  		annotationsToAdd = jlClassGetDeclaredAnnotations(clazz);
  		for (Annotation annotation : annotationsToAdd) {
  			combinedAnnotations.put(annotation.annotationType(), annotation);
  		}
  
  		return combinedAnnotations.values().toArray(new Annotation[combinedAnnotations.size()]);
  	}
docs: /*
  Called to satisfy an invocation of java.lang.Class.getDeclaredAnnotations().
  
  @param clazz the class upon which the original call was being invoked