Hi,
As mentioned on OAK-447, OAK-448 the introduction of the reset method in NodeBuilder lead to the breakdown of some of the class invariants that held earlier. See also the FIXME tags in MemoryNodeBuilder. In addition the code should be simplified where possible. Currently it is very hard to track what's going on just by reading the code, Javadoc and test cases.
I started an initial (ongoing) effort in my private branch: https://github.com/mduerig/jackrabbit-oak/commits/nodebuilder-cleanup So we can work on this without affecting the trunk.
Michael