### Question:
DescribableListProjectProperty extends BaseProjectProperty<DescribableList> { @Override public boolean allowOverrideValue(DescribableList cascadingValue, DescribableList candidateValue) { if (null == cascadingValue && null == candidateValue) { return false; } if (null != cascadingValue && null != candidateValue) { List cascadingList = cascadingValue.toList(); List candidateList = candidateValue.toList(); return !(CollectionUtils.isEqualCollection(cascadingList, candidateList) || DeepEquals.deepEquals(cascadingList, candidateList)); } return true; } DescribableListProjectProperty(ICascadingJob job); @Override DescribableList getDefaultValue(); @Override boolean allowOverrideValue(DescribableList cascadingValue, DescribableList candidateValue); @Override DescribableList getOriginalValue();  }### Answer:
@Test public void testAllowOverrideValue() { assertFalse(property.allowOverrideValue(null, null)); assertFalse(property.allowOverrideValue(new DescribableList(project), new DescribableList(project))); assertFalse(property.allowOverrideValue(new DescribableList(project), new DescribableList(project))); assertFalse(property.allowOverrideValue(new DescribableList(project), new DescribableList(parent))); DescribableList describableList1 = new DescribableList(project, Arrays.asList(new Shell("echo 'test3'"), new Shell("echo 'test2'"))); DescribableList describableList2 = new DescribableList(project, Arrays.asList(new Shell("echo 'test2'"), new Shell("echo 'test3'"))); assertFalse(property.allowOverrideValue(describableList1, describableList2)); DescribableList describableList3 = new DescribableList(parent, describableList2.toList()); assertFalse(property.allowOverrideValue(describableList1, describableList3)); describableList1 = new DescribableList(project, Arrays.asList(new Object())); describableList2 = new DescribableList(project, Arrays.asList(new Object())); assertFalse(property.allowOverrideValue(describableList1, describableList2)); assertTrue(property.allowOverrideValue(null, new DescribableList(project))); assertTrue(property.allowOverrideValue(new DescribableList(project), null)); assertTrue(property.allowOverrideValue(new DescribableList(project), new DescribableList(project, Arrays.asList(new Shell("echo 'test1'"))))); assertTrue(property.allowOverrideValue(new DescribableList(project, Arrays.asList(new Shell("echo 'test1'"))), new DescribableList(project))); }