core/src/main/java/net/typedrest/BeanUtils.java
public static <TAnnotation extends Annotation> List<PropertyDescriptor> getPropertiesWithAnnotation(Class<?> beanType, Class<TAnnotation> annotationType) {
        LinkedList<PropertyDescriptor> result = new LinkedList<>();
        getProperties(beanType).forEach(property -> {
            if (property.getReadMethod() != null && property.getReadMethod().getAnnotation(annotationType) != null
                    || isFieldAnnotated(beanType, property.getName(), annotationType)) {
                result.add(property);
            }
        });
        return result;
    }
public static <TAnnotation extends Annotation> List<PropertyDescriptor> getPropertiesWithAnnotation(Class<?> beanType, Class<TAnnotation> annotationType) {
        LinkedList<PropertyDescriptor> result = new LinkedList<>();
        getProperties(beanType).forEach(property -> {
            if (property.getReadMethod() != null && property.getReadMethod().getAnnotation(annotationType) != null
                    || isFieldAnnotated(beanType, property.getName(), annotationType)) {
                result.add(property);
            }
        });
        return result;
    }
Lists all properties on a bean type that have a specific annotation on
their getter or backing field.

@param <TAnnotation> The annotation type to look for.
@param beanType The type of bean to check for properties.
@param annotationType The annotation type to look for.
@return A list of matching properties.