private static String getSpanTypeFromJoinPoint(final ProceedingJoinPoint joinPoint) {
        val candidates = Stream.of(
            AnnotationUtils.findAnnotation(joinPoint.getSignature().getDeclaringType(), Monitorable.class),
            AnnotationUtils.findAnnotation(joinPoint.getTarget().getClass(), Monitorable.class));
        return candidates.filter(Objects::nonNull).findFirst().map(Monitorable::type).orElse("CAS");
    }
Around pointcut to wrap all monitorable components in the CAS namespace.
Starts an exit span, and returns the result of the joinpoint in the end.

@param joinPoint the join point
@return the object
support/cas-server-support-elastic/src/main/java/org/apereo/cas/apm/ElasticApmMonitoringAspect.java