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() + " **";
}