anchor.diff:  open System.Collections.Generic
   
   type RangeGeneratorAdvance<'T> = 'T -> 'T option
  -type RangeGeneratorIsDone<'T> = 'T -> 'T -> bool
   
   type public RangeGenerator<'T when 'T :> IComparable<'T>>
       (start: 'T,
        endInclusive: 'T,
  -     advance: RangeGeneratorAdvance<'T>,
  -     isDone: RangeGeneratorIsDone<'T>) =
  +     advance: RangeGeneratorAdvance<'T>) =
  +
  +    do
  +        if endInclusive.CompareTo(start) > 0 then
  +            raise (ArgumentOutOfRangeException("endInclusive", "end must be >= start"))
   
       interface IEnumerable<'T> with
           member this.GetEnumerator(): IEnumerator =
  
positive.code: 
              | Enumerating value ->
                  match generator.Advance value with
                  | Some newValue ->
                      state <- Enumerating newValue
                      true
  
negative.code:     member internal __.Start = start
      member internal __.EndInclusive = endInclusive
      member internal __.Advance = advance
  
  and internal EnumeratorState<'T> =
      | BeforeFirst
  