anchor.diff:  
   //
   [<CompiledName("FoldPairsBack")>]
  -let foldPairsBack (folder : 'T -> 'T -> 'State -> 'State) state list =
  +let foldPairsBack (folder : 'T -> 'T -> 'State -> 'State) list state =
       // Preconditions
       checkNonNull "list" list
   
  
positive.code:     // Preconditions
      checkNonNull "list1" list1
      checkNonNull "list2" list2
      // OPTIMIZE : Instead of checking List.length on both lists (which is O(n)),
      // just detect mismatched lengths on-the-fly.
      if List.length list1 <> List.length list2 then
          invalidArg "list2" "The lists have different lengths."
  
      let chooser = FSharpFunc<_,_,_>.Adapt chooser
  
      let mutable list1 = list1
      let mutable list2 = list2
      let mutable resultList = []
  
      while not <| List.isEmpty list1 do
          match chooser.Invoke (List.head list1, List.head list2) with
          | None -> ()
          | Some result ->
              resultList <- result :: resultList
  
          list1 <- List.tail list1
          list2 <- List.tail list2
  
      // Reverse the result list before returning.
      List.rev resultList
  
  //
  [<CompiledName("Unfold")>]
  
negative.code:     List.rev resultList
  
  //
  [<CompiledName("UnzipWith")>]
  let unzipWith (mapping : 'T -> 'U * 'V) list : 'U list * 'V list =
      // Preconditions
  