public void remove(LinkedListNode node) { DefeasibleLogicalDependency dep = ((LinkedListEntry<DefeasibleLogicalDependency>) node).getObject(); if (dep.getDefeatedBy() != null) { // Defeated deps do not have defeated defeated lists of their own, so just remove. DefeasibleLogicalDependency defeater = dep.getDefeatedBy(); defeater.removeDefeated(dep); } else { // ins undefeated, process it's defeated list if they exist removeUndefeated(dep, (LinkedListEntry<DefeasibleLogicalDependency>) node); if (dep.getRootDefeated() != null) { reprocessDefeated(dep.getRootDefeated()); } } updateStatus(); }
public Entry next(Entry object) { DefeasibleLogicalDependency dep = (DefeasibleLogicalDependency) object; if (dep.getRootDefeated() != null) { // try going down the list of defeated first return dep.getRootDefeated(); } if (dep.getNext() != null) { return dep.getNext(); } if (dep.getDefeatedBy() != null) { // go back up to the parent undefeated, and try the next undefeated return dep.getDefeatedBy().getNext(); } return null; // nothing more to iterate too. }