/** Removes a node and all its dependents from the graph. */ void removeDependencyPath (const T &key) { auto it = _nodeMap.find(key); if (it != _nodeMap.end()) { for (GraphNode *node = it->second.get(); node;) { GraphNode *dependent = node->dependent; node->unlinkDependees(); if (dependent) dependent->unlinkDependee(node); _nodeMap.erase(node->key); node = dependent; } } }