Is there a reason why DemandDependencyItem doesn't set demand as iDependOn in its constructor?
public DemandDependencyItem(Object name) { super(name, null, whenRequired, null);
Object iDependOn = item.getIDependOn(); if (iDependOn == null) { dependency = "<UNKNOWN>"; actualStateString = "** UNRESOLVED " + item.toHumanReadableString() + " **"; }