private static <T extends Annotation> T getSingleAnnotation(PropertyDescriptor property, Class<T> annotationClass,
            AccessibleObject... entities) throws ManagementException {
        T result = null;
        for (AccessibleObject entity : entities) {
            if (entity != null) {
                T annotation = entity.getAnnotation(annotationClass);
                if (annotation != null) {
                    if (result != null) {
                        throw new ManagementException(
                                String.format("Multiple %s annotations found for property %s",
                                        annotationClass.getName(), property.getName()));
                    }
                    result = annotation;
                }
            }
        }
        return result;
    }