anchor.diff:  
       override this.ToString () =
           sprintf "[%O, %O]" this.MinValue this.MaxValue
  +
  +    //
  +    member this.ToSeq (measurer : IMeasurer<_>) =
  +        let maxValue = this.MaxValue
  +        let rec loop current = seq {
  +            if current <= maxValue then
  +                yield current
  +                yield! loop (measurer.Next current)
  +            }
  +
  +        loop this.MinValue
   
   /// A Discrete Interval Encoding Tree (DIET).
   type private Diet<'T when 'T : comparison> =
  
positive.code:     let add (measurer : IMeasurer<_>) p (tree : Diet<'T>) : Diet<_> =
          addRec measurer p tree id
  
      /// Returns a new set with the specified range of values added to the set.
      /// No exception is thrown if any of the values are already contained in the set.
      let rec addRange (measurer : IMeasurer<_>) newRange (tree : Diet<'T>) : Diet<_> =
          match tree with
          | AvlTree.Empty ->
              AvlTree.singleton newRange
          | AvlTree.Node (range, left, right, _) ->
              if measurer.Compare (newRange.MinValue, measurer.Previous range.MinValue) < 0 then
                  AvlTree.join range (addRange measurer newRange left) right
              elif measurer.Compare (newRange.MinValue, measurer.Next range.MaxValue) > 0 then
                  AvlTree.join range left (addRange measurer newRange right)
              else
                  let x', left' =
                      if measurer.Compare (newRange.MinValue, range.MinValue) >= 0 then range.MinValue, left
                      else find_del_left measurer newRange.MinValue left
  
                  let y', right' =
                      if measurer.Compare (newRange.MaxValue, range.MaxValue) <= 0 then range.MaxValue, right
                      else find_del_right measurer newRange.MaxValue right
  
                  AvlTree.join (Range (x', y')) left' right'
  
      /// Returns a new set with the given element removed.
      /// No exception is thrown if the set doesn't contain the specified element.
  
negative.code:             cont (p, AvlTree.Empty)
          | AvlTree.Node (range, left, right, _) ->
              if measurer.Compare (p, measurer.Next range.MaxValue) > 0 then
                  find_del_left_rec measurer p right <| fun (p, right) ->
                      cont (p, AvlTree.join range left right)
              elif measurer.Compare (p, range.MinValue) < 0 then
                  find_del_left_rec measurer p left cont
              else
  