### Question:
BaseProjectProperty implements IProjectProperty<T> { public boolean allowOverrideValue(T cascadingValue, T candidateValue) { return ObjectUtils.notEqual(cascadingValue, candidateValue) && !DeepEquals.deepEquals(cascadingValue, candidateValue); } 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 testAllowOverrideValue() { assertFalse(property.allowOverrideValue(null, null)); assertTrue(property.allowOverrideValue(new Object(), null)); assertTrue(property.allowOverrideValue(null, new Object())); assertFalse(property.allowOverrideValue(new JavadocArchiver("", false), new JavadocArchiver("", false))); assertTrue(property.allowOverrideValue(new JavadocArchiver("", true), new JavadocArchiver("", false))); assertTrue(property.allowOverrideValue(new AxisList(new Axis("DB", "mysql")), new AxisList())); assertTrue(property.allowOverrideValue(new AxisList(new Axis("DB", "mysql")), new AxisList(new Axis("DB", "mysql", "mssql")))); assertTrue(property.allowOverrideValue(new AxisList(new Axis("DB", "mysql")), new AxisList(new Axis("DB", "mssql")))); }