(defprotocol DependencyGraph
(immediate-dependencies [graph node]
"Returns the set of immediate dependencies of node.")
(immediate-dependents [graph node]
"Returns the set of immediate dependents of node.")
(transitive-dependencies [graph node]
"Returns the set of all things which node depends on, directly or
transitively.")
(transitive-dependencies-set [graph node-set]
"Returns the set of all things which any node in node-set depends
on, directly or transitively.")
(transitive-dependents [graph node]
"Returns the set of all things which depend upon node, directly or
transitively.")
(transitive-dependents-set [graph node-set]
"Returns the set of all things which depend upon any node in
node-set, directly or transitively.")
(nodes [graph]
"Returns the set of all nodes in graph."))