anchor.diff:                      i <- i + 1
               let next = 
                   let i = ref 0
  -                let flag = ref true
  +                let valueReady = ref true
                   fun () -> 
  -                    if not !flag || !i >= source.Length then
  +                    if not !valueReady || !i >= source.Length then
                           false
                       else
  -                        flag := iterf source.[!i] 
  +                        valueReady := iterf source.[!i] 
                           incr i
                           true
               (bulk, next)
  
positive.code:                 | _ -> ()
              let next = 
                  let enumerator = source.GetEnumerator()
                  let flag = ref true
                  fun () -> 
                      if not !flag || not <| enumerator.MoveNext()  then
                          match enumerator with 
                          | :? System.IDisposable as disposable -> disposable.Dispose()
                          | _ -> ()
                          false
                      else
                          flag := iterf (enumerator.Current :?> 'T)
                          true
              (bulk, next)
          Stream iter
  
negative.code: 
              let next = 
                  let enumerator = source.GetEnumerator()
                  let valueReady = ref true
                  fun () -> 
                      if not !valueReady || not <| enumerator.MoveNext()  then
                          enumerator.Dispose()
                          false
                      else
                          valueReady := iterf enumerator.Current
                          true
              (bulk, next)
          Stream iter
  