// after all the validation rules where applied, checking what properties of the object require their own
// validation and recursively calling this method on them.
CascadeValidation[] cascadeValidations = configuration.getCascadeValidations();
BeanWrapper wrapper = wrapBean(obj);
for (int i=0; i<cascadeValidations.length; i++) {
CascadeValidation cascadeValidation = cascadeValidations[i];
Condition applicabilityCondition = cascadeValidation.getApplicabilityCondition();
if (!applicabilityCondition.check(obj)) {
continue;
}
String propertyName = cascadeValidation.getPropertyName();
Class propertyType = wrapper.getPropertyType(propertyName);
Object propertyValue = wrapper.getPropertyValue(propertyName);
// if the property value is not there nothing to validate.
if (propertyValue == null) {