class ValidatorImpl implements Validator {

	public <T> Set<ConstraintViolation<T>> validate(T object, Class<?>... groups) {
		if ( object == null ) {
			throw new IllegalArgumentException( "Validation of a null object" );
		}
		GroupChain groupChain = determineGroupExecutionOrder( groups );

		ExecutionContext<T> context = ExecutionContext.getContextForValidate(
				object, messageInterpolator, constraintValidatorFactory, traversableResolver
		);

		List<ConstraintViolation<T>> list = validateInContext( context, groupChain );
		return new HashSet<ConstraintViolation<T>>( list );
	}

	public  ValidatorImpl(ConstraintValidatorFactory constraintValidatorFactory, MessageInterpolator messageInterpolator, TraversableResolver traversableResolver, ConstraintHelper constraintHelper, BeanMetaDataCache beanMetaDataCache);

}