anchor.diff:              match curr with
               | None -> alreadyFinished()
               | Some x -> x
  -        let reset() = noReset()
           let dispose() =
               match state with
               | None -> ()
  
positive.code:     //         if index > 0 then alreadyFinished()
      //         x
      //     let next() = index <- index + 1; index = 0
      //     let reset() = noReset()
      //     let dispose() = ()
      //     fromFunctions get next reset dispose
  
      let cast (e: System.Collections.IEnumerator): IEnumerator<'T> =
          let get() = unbox<'T> e.Current
          let next() = e.MoveNext()
          let reset() = noReset()
          let dispose() =
              match e with
              | :? System.IDisposable as e -> e.Dispose()
              | _ -> ()
          fromFunctions get next reset dispose
  
      let concat<'T,'U when 'U :> seq<'T>> (sources: seq<'U>) =
          let mutable outerOpt: IEnumerator<'U> option = None
  
negative.code:             | Some (x, st) ->
                  acc <- st
                  true
          let dispose() = ()
          fromFunctions get next dispose
  
  // [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  // [<RequireQualifiedAccess>]
  