anchor.diff:              create a n right
               |> extractMax comparer
   
  -    /// Extracts the minimum (least) value from an AVL tree,
  -    /// returning the value along with the updated tree.
  -    let rec extractMin (comparer : IComparer<_>) (tree : AvlTree<'T>) =
  -        match tree with
  -        | Empty ->
  -            invalidArg "tree" "The tree is empty."
  -        | Node (n, Empty, r, _) ->
  -            n, r
  -        | Node (x, Node (a, left, mid, _), r, _) ->
  -            // Rebalance the tree at the same time we're traversing downwards
  -            // to find the minimum value. This avoids the need to perform a
  -            // second traversal to remove the element once it's found.
  -            let n = create x mid r
  -            create a left n
  -            |> extractMin comparer
  -
       /// Extracts the maximum (greatest) value from an AVL tree,
       /// returning the value along with the updated tree.
       /// No exception is thrown if the tree is empty.
  
positive.code: 
  //
  [<Struct>]
  type private Range<'T when 'T : comparison> =
      //
      val MinValue : 'T
  
negative.code: 
      /// Computes the union of the two sets.
      let rec union (measurer : IMeasurer<_>) (input : Diet<_>) (stream : Diet<_>) : Diet<'T> =
          let rec union' (input : Diet<_>) limit head (stream : Diet<_>) =
              match head with
              | None ->
  