### Question:
BaseProjectProperty implements IProjectProperty<T> { protected void onCascadingProjectSet() { setOverridden(allowOverrideValue(getCascadingValue(), getValue())); } BaseProjectProperty(ICascadingJob job); void setKey(String propertyKey); String getKey(); void setJob(ICascadingJob job); void setOverridden(boolean overridden); @SuppressWarnings("unchecked") T getCascadingValue(); boolean isOverridden(); T getDefaultValue(); T getValue(); @SuppressWarnings("unchecked") void setValue(T value); void resetValue(); boolean allowOverrideValue(T cascadingValue, T candidateValue); T getOriginalValue(); final void onCascadingProjectChanged();  }### Answer:
@Test public void testOnCascadingProjectSet() { property.setValue(parentPropertyValue); project.setCascadingProject(parent); property.setOverridden(true); assertTrue(property.isOverridden()); assertFalse(property.allowOverrideValue(parentProperty.getOriginalValue(), property.getValue())); property.onCascadingProjectSet(); assertFalse(property.isOverridden()); property.setValue("newValue"); assertTrue(property.allowOverrideValue(parentProperty.getOriginalValue(), property.getValue())); property.onCascadingProjectSet(); assertTrue(property.isOverridden()); }