DefaultObjectWrapper with its incompatible_improvements set to 2.3.22 or with its new useAdaptersForContainers setting set to true doesn't copy Map-s, List-s and array anymore when wrapping them to TemplateModel-s, just puts a TemplateModel adapter layer over them. The wrapped values will be instances of the new SimpleMapAdapter, SimpleListAdapter, SimpleArrayAdapter classes, instead of SimpleHash-es and SimpleSequence-s.

Reasons and consequences: Especially since the garbage collector of Java become more efficient over time, the copying strategy has caused more problems than good. Most importantly, now the key order of Map-s was is never lost (bug fixed: [368]), and the exact type and identity of the Map is kept when the wrapped Map/List is passed back to Java method from the template. The new adapter approach also tends to be faster, though it depends on if how many times the same Map or List entry is read from the template. Most templates only look at the same entry once in average, in which case it's faster than the copying approach. When the same entry is accessed for several times, the copying approach becomes faster as it remembers the wrapped form of the entries, so they don't have to be re-wrapped again and again.
Removed Emma from the build, hence speeding up and simplifying `ant test`. One can use EclEmma (which BTW doesn't use Emma, but JaCoCo) from Eclipse.