anchor.diff:      /// No exception is thrown if the set doesn't contain the specified element.
       let rec remove value (tree : CharDiet) : CharDiet =
           match tree with
  -        | AvlTree.Empty ->
  -            AvlTree.Empty
  -        | AvlTree.Node ((x, y), left, right, h) ->
  +        | Empty ->
  +            Empty
  +        | Node ((x, y), left, right, h) ->
               let czx = compare value x
               if czx < 0 then
                   AvlDiet.join (x, y) (remove value left) right
  
positive.code:         // OPTIMIZE : Modify this to use a mutable stack instead of an F# list.
          let rec cardinal_aux acc = function
              | [] -> acc
              | AvlTree.Empty :: ts ->
                  cardinal_aux acc ts
              | AvlTree.Node ((x, y), left, right, _) :: ts ->
                  let d = dist x y
                  cardinal_aux (acc + d + 1) (left :: right :: ts)
          
  
negative.code:                     if czx = 0 then
                          AvlDiet.reroot left right
                      else
                          Node ((x, pred y), left, right, h)
                  elif czx = 0 then
                      Node ((succ x, y), left, right, h)
                  else
                      addRange (succ value, y) (Node ((x, pred value), left, right, h))    
  
      /// Computes the union of the two sets.
      let rec union (input : CharDiet) (stream : CharDiet) : CharDiet =
          let rec union' (input : CharDiet) limit head (stream : CharDiet) =
              match head with
              | None ->
                  input, None, Empty
              | Some (x, y) ->
                  match input with
                  | Empty ->
                      Empty, head, stream
                  | Node ((a, b), left, right, _) ->
                      let left', head, stream =
                          if x < a then
                              union' left (Some <| pred a) head stream
  