Refactor out node conditions into NodeMatcher
Java 7-ify Node#equals()
Add Node#shallowEquals()
Path class to keep track of node paths
Use Path class
Implement hashCode() and equals() for NodeMatcher classes
Path refactorings
Implement Path#equals(), Path#hashCode(), Path#forParent()
Add NodeContext#forParent()
Introduce node match cache
Add NodeMatchers.forParent()
Add Path#toString()
Make Path implement Iterable<Node>
Add ability to use custom value/attachment matchers and to traverse node trees.
Add NodeContext#path() to retrieve the path of the current context
Make Contexts class instantiable, make methods non-static
Add Nodes, a Node builder class.