Fix #10

Added hierarchical visitor implementation, and externalized the implementation so that it can also be used from the newly introduced fake solution explorer classes that make it far easier to unit test the behavior associated with the solution.