code: protected <A extends Annotation, T, V> boolean validate(final GwtValidationContext<T> context,
        final Set<ConstraintViolation<T>> violations, final G object, final V value,
        final ConstraintValidator<A, ? super V> validator,
        final ConstraintDescriptorImpl<A> constraintDescriptor, final Class<?>... groups) {
      validator.initialize(constraintDescriptor.getAnnotation());
      final ConstraintValidatorContextImpl<A, V> constraintValidatorContext =
          context.createConstraintValidatorContext(constraintDescriptor);
  
      final List<Class<?>> groupsList = Arrays.asList(groups);
      final ValidationGroupsMetadata validationGroupsMetadata =
          context.getValidator().getValidationGroupsMetadata();
      final Set<Class<?>> constraintGroups = constraintDescriptor.getGroups();
  
      // check groups requested are in the set of constraint groups (including the implicit group)
      if (!containsAny(groupsList, constraintGroups)
          && !groupsList.contains(getConstraints(validationGroupsMetadata).getElementClass())) {
        return false;
      }
  
      if (!validator.isValid(value, constraintValidatorContext)) {
        addViolations(//
            context, //
            violations, //
            object, //
            value, //
            constraintDescriptor, //
            constraintValidatorContext);
        return true;
      }
      return false;
    }
docs: Perform the actual validation of a single {@link ConstraintValidator}.
  <p>
  As a side effect {@link ConstraintViolation}s may be added to {@code violations}.
  </p>
  
  @param context validation context
  @param violations set of violations
  @param object object
  @param value value to validate
  @param validator validator to use
  @param constraintDescriptor constraint descriptor
  @param groups validation groups to take care of
  @param <A> the type of the annotation
  @param <T> the type of the class to validate
  @param <V> the type of the value to validate
  @return true if there was any constraint violations