anchor.diff:              match curr with
               | None -> alreadyFinished()
               | Some x -> x
  -        let reset() = noReset()
           let dispose() =
               match state with
               | None -> ()
  
positive.code:             | Some (x, st) ->
                  acc <- st
                  true
          let reset() = noReset()
          let dispose() = ()
          fromFunctions get next reset dispose
  
  // [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  // [<RequireQualifiedAccess>]
  
negative.code:                 str <- str + "; ..."
              str + "]"
  
      type FromFunctions<'T>(get, next, dispose) =
          interface IEnumerator<'T> with
              member __.Current = get()
          interface System.Collections.IEnumerator with
              member __.Current = box (get())
              member __.MoveNext() = next()
              member __.Reset() = noReset()
          interface System.IDisposable with
              member __.Dispose() = dispose()
  
      let inline fromFunctions get next dispose: IEnumerator<'T> =
          new FromFunctions<_>(get, next, dispose) :> IEnumerator<'T>
  
      // // implementation for languages where arrays are not IEnumerable
      //
  