anchor.diff:          let iteri f (source : seq<'T>) = 
               checkNonNull "source" source
               use e = source.GetEnumerator()
  +            let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f)
               let mutable i = 0 
               while e.MoveNext() do
  -                f i e.Current;
  +                f.Invoke(i, e.Current);
                   i <- i + 1;
   
           [<CompiledName("Exists")>]
  
positive.code:         [<CompiledName("Scan")>]
          let scan<'T,'State> f (z:'State) (source : seq<'T>) = 
              checkNonNull "source" source
              seq { let zref = ref z
                    yield !zref
                    use ie = source.GetEnumerator() 
                    while ie.MoveNext() do
                        zref := f !zref ie.Current 
                        yield !zref }
  
          [<CompiledName("FindIndex")>]
  
negative.code:               }
            
        let mapi f (e : IEnumerator<_>) : IEnumerator<_> =
            let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f)
            let i = ref (-1) 
            upcast
                {  new MapEnumerator<_>() with
                       member this.DoMoveNext curr =
                          i := !i + 1
                          if e.MoveNext() then
                             curr <- f.Invoke(!i, e.Current)
                             true
                          else
                             false
  