Cleaning and reorganize.
Native union() implementation.
Bug fixes, plus introducing modification result type for every modifying operation.
Push cachedSize in nodes. This has a big impact on space consumption, but allows top-down pruning of empty branches and cleverer equality checking.
Pulling classes in as private static inner classes.