class ConstraintHelper {

	public <A extends Annotation> List<Annotation> getMultiValueConstraints(A annotation) {
		List<Annotation> annotationList = new ArrayList<Annotation>();
		try {
			Method m = annotation.getClass().getMethod( "value" );
			Class returnType = m.getReturnType();
			if ( returnType.isArray() && returnType.getComponentType().isAnnotation() ) {
				Annotation[] annotations = ( Annotation[] ) m.invoke( annotation );
				for ( Annotation a : annotations ) {
					if ( isConstraintAnnotation( a ) || isBuiltinConstraint( a.annotationType() ) ) {
						annotationList.add( a );
					}
				}
			}
		}
		catch ( NoSuchMethodException nsme ) {
			// ignore
		}
		catch ( IllegalAccessException iae ) {
			// ignore
		}
		catch ( InvocationTargetException ite ) {
			// ignore
		}
		return annotationList;
	}

	public  ConstraintHelper();

}