anchor.diff:                      |> tap (fun x ->
                           assert (dietInvariant x)
                           assert (fst <| intervalsDisjoint x Set.empty))
  -                elif value > succ y then
  +                elif value > safeSucc y then
                       // The value is above the interval and is not adjacent
                       // to it, so recurse down the right subtree to add the value
                       // then join the result with the left subtree.
  
positive.code:                             assert (fst <| intervalsDisjoint x Set.empty))
                      | _ ->
                          let (u, v), r = CharDiet.DeleteMin right
                          if pred u = value then
                              CharDiet.Join (comparer, left, r, (x, v))
                              |> tap (fun x ->
                                  assert (dietInvariant x)
  
negative.code:                                 assert (dietInvariant x)
                                  assert (fst <| intervalsDisjoint x Set.empty))
  
              elif value < safePred x then
                  CharDiet.Join (comparer, add value left, right, (x, y))
                  |> tap (fun x ->
                      assert (dietInvariant x)
  