anchor.diff:  
       segments.ToArray()
   
  -/// Splits two arrays into one or more segments by applying the specified predicate
  -/// to the each pair of array elements and starting a new view whenever the
  -/// predicate returns true.
  +/// <summary>
  +/// Splits two arrays into one or more segments by applying the specified predicate to the each pair of array elements and
  +/// starting a new view whenever the predicate returns <c>true</c>.
  +/// </summary>
  +/// <param name="predicate"></param>
  +/// <param name="array1"></param>
  +/// <param name="array2"></param>
  +/// <returns></returns>
   [<CompiledName("Segment2")>]
   let segment2 (predicate : 'T -> 'U -> bool) (array1 : 'T[]) (array2 : 'U[])
       : ArrayView<'T>[] * ArrayView<'U>[] =
  
positive.code:         state <- folder.Invoke (i, array.[i], state)
      state
  
  /// Splits an array into one or more arrays; the specified predicate is applied
  /// to each element in the array, and whenever it returns true, that element will
  /// be the first element in one of the "subarrays".
  [<CompiledName("Split")>]
  let split (predicate : 'T -> bool) (array : 'T[]) =
      // Preconditions
  
negative.code: 
          result
  
  /// <summary></summary>
  /// <param name="predicate"></param>
  /// <param name="array"></param>
  /// <returns></returns>
  [<CompiledName("FindBack")>]
  let findBack (predicate : 'T -> bool) (array : 'T[]) : 'T =
      match tryFindBack predicate array with
  