docs: @Nullable
      public static <T extends Annotation> T extract(Class<?> targetClass, Class<T> annotationClass) {
          T annotation = null;
          if (targetClass.isAnnotationPresent(annotationClass)) {
              annotation = targetClass.getAnnotation(annotationClass);
              if (annotation == null && logger.isDebugEnabled()) {
                  logger.debug("TargetClass has no annotation '{}'", annotationClass.getSimpleName());
                  annotation = targetClass.getDeclaredAnnotation(annotationClass);
                  if (annotation == null && logger.isDebugEnabled()) {
                      logger.debug("TargetClass has no declared annotation '{}'", annotationClass.getSimpleName());
                  }
              }
          }
          return annotation;
      }