anchor.diff:          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 state  e.Current;
  +                state <- f.Invoke(state, e.Current)
               state
   
           [<CompiledName("Reduce")>]
  
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:             checkNonNull "source2" source2
              use e1 = source1.GetEnumerator()
              use e2 = source2.GetEnumerator()
              let p = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(p)
              let mutable ok = false
              while (not ok && e1.MoveNext() && e2.MoveNext()) do
                  ok <- p.Invoke(e1.Current, e2.Current)
              ok
  
          [<CompiledName("Head")>]
  