anchor.diff:              && dietInvariant r
               // Check that the intervals are disjoint.
               //&& (intervalsDisjoint tree Set.empty |> fst)
  +*)
   
       //
       // NOTE : This function is only called by 'addRange'.
  
positive.code:         | Node (l, r, _, _) ->
              1u + max (computeHeight l) (computeHeight r)
  
      /// Determines if the intervals in a DIET are disjoint.
      let rec intervalsDisjointImpl (tree : CharDiet) (elements : Set<char>) =
          match tree with
  
negative.code:             when streamHeight > inputHeight ->
              intersect stream input
          | _, _ ->
  //            #if DEBUG
  //            /// The maximum possible number of elements in the resulting set.
  //            let maxPossibleResultCount =
  //                let inputCount = count input
  //                let streamCount = count stream
  //                inputCount + streamCount
  //            #endif
  
              let result, _, _ =
                  CharDiet.TryDeleteMin stream
                  ||> intersectImpl input
              
  //            Debug.Assert (
  //                dietInvariant result,
  //                "The DIET invariant does not hold for the result.")
  //            Debug.Assert (
  //                intervalsDisjoint result,
  //                "The intervals in the DIET are not disjoint.")
  
  //            #if DEBUG
  //            let resultCount = count result
  //
  //            Debug.Assert (
  //                resultCount <= maxPossibleResultCount,
  //                sprintf "The result set should not contain more than %i elements, but it contains %i elements."
  //                    maxPossibleResultCount resultCount)
  //            #endif
              result
  
      /// Recursive implementation function for computing the difference of two sets.
  