anchor.diff:              checkNonNull "array2" array2
               let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f)
               let len1 = array1.Length
  -            if len1 <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths))
  +            if len1 <> array2.Length then invalidArgDifferentArrayLength "array1" array1.Length "array2" array2.Length
               let rec loop i = i < len1 && (f.Invoke(array1.[i], array2.[i]) || loop (i+1))
               loop 0
   
  
positive.code:             let f = OptimizedClosures.FSharpFunc<_,_,_,_>.Adapt(f)
              let mutable res = acc 
              let len = array1.Length
              if len <> array2.Length then invalidArg "array2" (SR.GetString(SR.arraysHadDifferentLengths))
              for i = len-1 downto 0 do 
                  res <- f.Invoke(array1.[i],array2.[i],res)
              res
  
negative.code:             checkNonNull "array2" array2
              let f = OptimizedClosures.FSharpFunc<_,_,_>.Adapt(f)
              let len1 = array1.Length
              if len1 <> array2.Length then invalidArgDifferentArrayLength "array1" array1.Length "array2" array2.Length
              let rec loop i = i >= len1 || (f.Invoke(array1.[i], array2.[i]) && loop (i+1))
              loop 0
  
  