anchor.diff:          match tree with
           | Empty ->
               CharDiet.Singleton (a, b)
  -            |> tapInvariant
  +            |> tap (fun x -> assert (dietInvariant x))
           | Node (left, right, (x, y), _) ->
               if b < pred x then
                   let left' = addRange (a, b) left
                   assert (dietInvariant left')
                   CharDiet.Join (comparer, left', right, (x, y))
  -                |> tapInvariant
  +
  +                |> tap (fun x -> assert (dietInvariant x))
               elif a > succ y then
                   let right' = addRange (a, b) right
                   assert (dietInvariant right')
                   CharDiet.Join (comparer, left, right', (x, y))
  -                |> tapInvariant
  +                |> tap (fun x -> assert (dietInvariant x))
               else
                   // Now, we know the interval (a, b) being inserted either overlaps or is
                   // adjancent to the current inverval (x, y), so we merge them.
  
positive.code:                     ||> inter_helper (a, b) right left
              elif b < x then
                  let right, head, stream = inter' right head stream
                  (tapInvariant <| CharDiet.Reroot (comparer, left, right)), head, stream
              elif y >= clampedPred y b then
                  let right, head, stream = inter' right head stream
                  let right' =
                      CharDiet.Join (comparer, left, right, (max x a, min y b))
                      |> tapInvariant
                  right', head, stream
              else
                  let left =
                      addRange (max x a, y) left
                      |> tapInvariant
                  inter_helper (succ y, b) right left head stream
  
      /// Computes the intersection of the two sets.
  
negative.code:                 assert (dietInvariant left')
                  assert (dietInvariant right')
                  CharDiet.Join (comparer, left', right', (x', y'))
                  |> tap (fun x -> assert (dietInvariant x))
  
      /// Returns a new set with the given element removed.
      /// No exception is thrown if the set doesn't contain the specified element.
  