public static boolean isValid(Collection<Object> propertyValues, ComparisonMode comparisonMode) {
		boolean ignoreCase = false;
		boolean isValid = true;
		List<Object> values = new ArrayList<Object> (propertyValues.size());
		
		switch(comparisonMode) {
			case EQUAL_IGNORE_CASE:
			case NOT_EQUAL_IGNORE_CASE:
				ignoreCase = true;
				break;
			default:
		}
		
		for(Object propertyValue: propertyValues) {
			if(ignoreCase) {
				if(String.class.isInstance(propertyValue)) {
					values.add((Object) ((String) propertyValue).toLowerCase());
				}
			} else {
				values.add(propertyValue);
			}
		}
	
		switch(comparisonMode) {
			case EQUAL:
			case EQUAL_IGNORE_CASE:
				Set<Object> uniqueValues = new HashSet<Object>(values);
				isValid = uniqueValues.size() == 1;
				break;
			case NOT_EQUAL:
			case NOT_EQUAL_IGNORE_CASE:
				Set<Object> allValues = new HashSet<Object>(values);
				isValid = allValues.size() == values.size();
				break;
		}
		
		return isValid;
	}