Lots of changes because of changes in my Util project (replacing my own multimap implementations with google guavas MultiMap) and a rewrite of my tree and tree printer classes