anchor.diff:      /// The standard F# Array module, lifted into the Async monad.
       [<RequireQualifiedAccess; CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
       module Array =
  +        open System.Collections
  +        
  +        (* OPTIMIZE :   Some of the functions below build an Async workflow by folding forwards (left-to-right)
  +                        over the array. Depending on how async is implemented internally though, it might
  +                        be more efficient to fold backwards so that as each element is processed it can tail-call
  +                        the next element. *)
  +
           //
           [<CompiledName("Initialize")>]
           let init (count : int) (initializer : int -> Async<'T>) : Async<'T[]> =
  
positive.code:             | None ->
                  Choice1Of2 ((), state)
  
          /// A specialization of ArraySegment.iteri which threads an accumulator through the computation and which also
          /// short-circuits the computation if the mapping function returns an error when any element is applied to it.
          [<CompiledName("IterateIndexed")>]
          let iteri (action : int -> 'T -> 'State -> Choice<unit * 'State, 'Error>) (segment : System.ArraySegment<'T>) (state : 'State) : Choice<unit * 'State, 'Error> =
              let action = FSharpFunc<_,_,_,_>.Adapt action
  
              let array = segment.Array
  
negative.code:         /// A specialization of ArraySegment.iteri which threads an accumulator through the computation; this allows
          /// the use of actions requiring a (possibly mutable) state variable.
          [<CompiledName("IterateIndexed")>]
          let iteri (action : int -> 'T -> 'State -> unit * 'State)
                  (segment : System.ArraySegment<'T>) (state : 'State) : unit * 'State =
              let action = FSharpFunc<_,_,_,_>.Adapt action
  
              let array = segment.Array
  