anchor.diff:                  let l' = AvlTree.Delete (comparer, l, value)
   
                   // Only rebalance the tree if an element was actually deleted.
  -                if l' === l then tree
  +                if l' == l then tree
                   else AvlTree.mkt_bal_r (n, l', r)
               else
                   // x > n
                   let r' = AvlTree.Delete (comparer, r, value)
                   
                   // Only rebalance the tree if an element was actually deleted.
  -                if r' === r then tree
  +                if r' == r then tree
                   else AvlTree.mkt_bal_l (n, l, r')
   
       /// Adds a value to a AvlTree.
  
positive.code:         let result = CharDiet.add value charSet.Tree
          //assert (CharDiet.dietInvariant result)
          //assert (CharDiet.intervalsDisjoint result)
          if charSet.Tree === result then charSet
          else CharSet (result)
  
      //
  
negative.code:         //assert (CharDiet.intervalsDisjoint charSet2.Tree)
  
          // If the input sets have the same underlying tree, we can return immediately.
          if charSet1.Tree == charSet2.Tree then charSet1
          else
              // OPTIMIZATION : If the result is the same as either input set's tree,
              // return that set instead of creating a new one.
              let result = CharDiet.union charSet1.Tree charSet2.Tree
              //assert (CharDiet.dietInvariant result)
              //assert (CharDiet.intervalsDisjoint result)
              if charSet1.Tree == result then charSet1
              elif charSet2.Tree == result then charSet2
              else CharSet (result)
  
      //
  