I migrated the manual preserve formatting test to be a JUnit test, and
it is passing that.
Most of the refactoring was around the reference recording and
containment recording code.
The recorded reference properties now have indexes and keys if they are
in lists or maps.
And the recorded containment code now pays attention to the index and
key of an object in a list or map.
Scott