code: private static <T> T process(AnnotatedElement element, String annotationType, boolean traverseClassHierarchy,
  			Processor<T> processor) {
  
  		try {
  			return doProcess(element, annotationType, traverseClassHierarchy, processor,
  					new HashSet<AnnotatedElement>(), 0);
  		}
  		catch (Throwable ex) {
  			throw new IllegalStateException("Failed to introspect annotations: " + element, ex);
  		}
  	}
docs: Process all annotations of the specified {@code annotationType} and
  recursively all meta-annotations on the specified {@code element}.
  <p>If the {@code traverseClassHierarchy} flag is {@code true} and the sought
  annotation is neither <em>directly present</em> on the given element nor
  present on the given element as a meta-annotation, then the algorithm will
  recursively search through the class hierarchy of the given element.
  @param element the annotated element
  @param annotationType the annotation type to find
  @param traverseClassHierarchy whether or not to traverse up the class
  hierarchy recursively
  @param processor the processor to delegate to
  @return the result of the processor