An implementation of dependency analysis. See http://codekata.pragprog.com/2007/01/kata_eighteen_t.html