final boolean isReturn = ReturnAccess.class.isInstance(access);
final boolean isParam = ParametersAccess.class.isInstance(access);
if (rawConstraintClasses != null && (isReturn || isParam)) {
final Collection<Class<? extends ConstraintValidator<A, ?>>> selected = new ArrayList<Class<? extends ConstraintValidator<A, ?>>>();
for (final Class<? extends ConstraintValidator<A, ?>> constraint : rawConstraintClasses) {
final SupportedValidationTarget target = constraint.getAnnotation(SupportedValidationTarget.class);
if (target == null && isReturn) {
selected.add(constraint);
} else if (target != null) {
for (final ValidationTarget validationTarget : target.value()) {
if (isReturn && ValidationTarget.ANNOTATED_ELEMENT.equals(validationTarget)) {
selected.add(constraint);
} else if (isParam && ValidationTarget.PARAMETERS.equals(validationTarget)) {
selected.add(constraint);
}