1.  Change output to have package for each node group (nonterminal)
    Limited with each dependency
    add an "apply" method which takes #2 interface as
       argument.  Call correct named method from interface.
2.  Create an interface with method for every node type.
    Model after Analysis.java
    Must limited with every node package.
3.  Implement DFS class that implements #2's interface
    Model after DepthFirstAdapter.java
    add null "before" and "after" procedures

Ponder:
Java has this really nice Hash thing going on, where you can associate a
something with each node.  Maybe we can do this with Ada.Containers.Hashed_Maps??

If so, we probably want to make an empty interface hashable, and then say you have to
implement it??  Perhaps this is easier than a generic??
    