ListNode implements a "simple" versioning list using a modified AA Tree. The core logic itself is pretty small, but by the time you add all the queries it is more than 500 lines of code.
I've done ListNode, complete with javadocs and unit tests. This was so much easier than working on JActor2, as things were pretty well defined. So I did not need to do any major refactoring while working on ListNode.
MapNode will likely not be any shorter. But once done, we have a "simple" versioning map list. The next step then is to transform the code into an immutable versioning map list. Then we just need to add lazy deserialization and package it all up in a b-tree.
Needless to say, I expect to be working on this for a while. :-(