anchor.diff:                  if c <> 0 then c else
                   if not e1ok || not e2ok then 0 
                   else
  -                    let c = f e1.Current e2.Current 
  +                    let c = f.Invoke(e1.Current, e2.Current)
                       if c <> 0 then c else
                       go () 
               go()
  
positive.code:             checkNonNull "source" source
              use e = source.GetEnumerator() 
              if not (e.MoveNext()) then invalidArg "source" InputSequenceEmptyString;
              let mutable state = e.Current 
              while e.MoveNext() do
                  state <- f state  e.Current;
              state
  
          let fromGenerator f = mkSeq(fun () -> Generator.EnumerateFromGenerator (f()))
  
negative.code:         let fold<'T,'State> f (x:'State) (source : seq<'T>)  = 
              checkNonNull "source" source
              use e = source.GetEnumerator() 
              let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f)
              let mutable state = x 
              while e.MoveNext() do
                  state <- f.Invoke(state, e.Current)
              state
  
          [<CompiledName("Reduce")>]
  