The story about immutable tree would not be complete without xslt implementation. To make it possible one needs something to approxomate tree nodes. You cannot implement such consruct efficiently in pure xslt 2.0 (it would be either unefficient or not pure).
To isolate the problem we have used tuple interface:
tuple:ref($items as item()*) as item()
tuple:deref($tuple as item()?) as item()*
tuple:is-same($first as item(), $second as item()) as xs:boolean
and defined inefficient implementation based on xml elements. Every other part of code is a regular AVL algorithm implementation.
We want to stress again that even assuming that there is a good tuple implementation we would prefer built-in associative container implementation. Why the heck you need to include about 1000 lines of code just to use a map?
Source code is:
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u