code: public static AnnotationAttributes getAnnotationAttributes(Annotation annotation, boolean classValuesAsString,
  			boolean nestedAnnotationsAsMap) {
  
  		AnnotationAttributes attrs = new AnnotationAttributes();
  		Method[] methods = annotation.annotationType().getDeclaredMethods();
  		for (Method method : methods) {
  			if (method.getParameterTypes().length == 0 && method.getReturnType() != void.class) {
  				try {
  					Object value = method.invoke(annotation);
  					attrs.put(method.getName(), adaptValue(value, classValuesAsString, nestedAnnotationsAsMap));
  				}
  				catch (Exception ex) {
  					throw new IllegalStateException("Could not obtain annotation attribute values", ex);
  				}
  			}
  		}
  		return attrs;
  	}
docs: Retrieve the given annotation's attributes as an {@link AnnotationAttributes}
  map structure.
  @return the annotation attributes (a specialized Map) with attribute names as keys
  and corresponding attribute values as values
  @since 3.1.1