src/main/java/js/container/ManagedClass.java
private static boolean hasAnnotation(Class<?> clazz, Class<? extends Annotation> annotationClass) {
		Annotation annotation = clazz.getAnnotation(annotationClass);
		if (annotation != null) {
			return true;
		}
		for (Class<?> interfaceClass : clazz.getInterfaces()) {
			annotation = interfaceClass.getAnnotation(annotationClass);
			if (annotation != null) {
				return true;
			}
		}
		return false;
	}
private static boolean hasAnnotation(Class<?> clazz, Class<? extends Annotation> annotationClass) {
		Annotation annotation = clazz.getAnnotation(annotationClass);
		if (annotation != null) {
			return true;
		}
		for (Class<?> interfaceClass : clazz.getInterfaces()) {
			annotation = interfaceClass.getAnnotation(annotationClass);
			if (annotation != null) {
				return true;
			}
		}
		return false;
	}
Test if class has requested annotation. This predicate uses extended annotation searching scope: it searches first on
given class then tries with all class interfaces. Note that only interfaces are used as alternative for annotation
search. Super class is not included.
<p>
Returns false if no annotation found on base class or interfaces.

@param clazz base class to search for annotation,
@param annotationClass annotation to search for.
@return true if annotation found.