anchor.diff:  
       chosen.ToArray ()
   
  +/// <summary>
   /// Applies a function to each element of the collection, threading an accumulator argument through the computation.
   /// The integer index passed to the function indicates the array index of the element being transformed.
  +/// </summary>
  +/// <param name="folder"></param>
  +/// <param name="state"></param>
  +/// <param name="array"></param>
  +/// <returns></returns>
   [<CompiledName("FoldIndexed")>]
   let foldi (folder : 'State -> int -> 'T -> 'State) (state : 'State) (array : 'T[]) =
       // Preconditions
  
positive.code:             | Some result ->
                  array.[i] <- result
  
  /// Returns the number of array elements matching a given predicate.
  // Array.countWith predicate array = (Array.filter predicate array |> Array.length)
  [<CompiledName("CountWith")>]
  let countWith (predicate : 'T -> bool) (array : 'T[]) : int =
      // Preconditions
  
negative.code: 
      segments1.ToArray(), segments2.ToArray()
  
  /// <summary>
  /// Splits the collection into two (2) collections, containing the elements for which the given function returns
  /// <c>Choice1Of2</c> or <c>Choice2Of2</c>, respectively.
  /// </summary>
  /// <param name="partitioner"></param>
  /// <param name="array"></param>
  /// <returns></returns>
  /// <remarks>
  /// This function is similar to Array.partition, but it allows the returned collections to have different types.
  /// </remarks>
  [<CompiledName("MapPartition")>]
  let mapPartition (partitioner : 'T -> Choice<'U1, 'U2>) array : 'U1[] * 'U2[] =
      // Preconditions
  