Made some simplifications to the Join and Reroot methods of AvlTree. Added some comments within the code to help understand what the code is doing. Temporarily re-implemented 'union' using AvlTree.Fold; interestingly, this still triggers the bug, so that drastically lowers the number of places to look for it. Fixed the assertion in the Diet.difference function -- the minimum number of elements in the result is always 0, so we should be checking for a maximum number of elements.
Made some simplifications to the Join and Reroot methods of AvlTree.
Added some comments within the code to help understand what the code is doing.
Temporarily re-implemented 'union' using AvlTree.Fold; interestingly, this still triggers the bug, so that drastically lowers the number of places to look for it.
Fixed the assertion in the Diet.difference function -- the minimum number of elements in the result is always 0, so we should be checking for a maximum number of elements.

YaccConstructor/facio,emavchun/facio,jack-pappas/facio,YaccConstructor/facio,emavchun/facio