anchor.diff:  
       open System
       open Microsoft.FSharp.Core
  +    open Microsoft.FSharp.Core.DetailedExceptions
       open Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators
       open Microsoft.FSharp.Core.Operators
       open Microsoft.FSharp.Core.Operators.Checked
  
positive.code: 
          [<CompiledName("ZeroCreate")>]
          let zeroCreate (n:int) (m:int) = 
              if n < 0 then invalidArg "n" (SR.GetString(SR.inputMustBeNonNegative))
              if m < 0 then invalidArg "m" (SR.GetString(SR.inputMustBeNonNegative))
              (# "newarr.multi 2 !0" type ('T) n m : 'T[,] #)
  
          [<CompiledName("ZeroCreateBased")>]
  
negative.code:         let blit (source : 'T[,])  sourceIndex1 sourceIndex2 (target : 'T[,]) targetIndex1 targetIndex2 count1 count2 = 
              checkNonNull "source" source
              checkNonNull "target" target
              let sourceX0, sourceY0 = source.GetLowerBound 0     , source.GetLowerBound 1
              let sourceXN, sourceYN = (length1 source) + sourceX0, (length2 source) + sourceY0  
              let targetX0, targetY0 = target.GetLowerBound 0     , target.GetLowerBound 1
              let targetXN, targetYN = (length1 target) + targetX0, (length2 target) + targetY0  
  
              if sourceIndex1 <  sourceX0 then 
                  invalidArgFmt "sourceIndex1" 
                      "{0}\nsourceIndex1 = {1}, source axis-0 lower bound = {2}" 
                      [|SR.GetString SR.outOfRange; sourceIndex1; sourceX0|]
              if sourceIndex2 < sourceY0 then 
                  invalidArgFmt "sourceIndex2" 
                      "{0}\nsourceIndex2 = {1}, source axis-1 lower bound = {2}" 
                      [|SR.GetString SR.outOfRange; sourceIndex2; sourceY0|]
              if targetIndex1 < targetX0 then 
                  invalidArgFmt "targetIndex1" 
                      "{0}\ntargetIndex1 = {1}, target axis-0 lower bound = {2}" 
                      [|SR.GetString SR.outOfRange; targetIndex1; targetX0|]
              if targetIndex2 < targetY0 then 
                  invalidArgFmt "targetIndex2" 
                      "{0}\ntargetIndex2 = {1}, target axis-1 lower bound = {2}" 
                      [|SR.GetString SR.outOfRange; targetIndex2; targetY0|]
              if sourceIndex1 + count1 > sourceXN then 
                  invalidArgFmt "count1" 
                      "{0}\nsource axis-0 end index = {1}, source axis-0 upper bound = {2}" 
                      [|SR.GetString SR.outOfRange; sourceIndex1 + count1; sourceXN|]
              if sourceIndex2 + count2 > sourceYN then 
                  invalidArgFmt "count2" 
                      "{0}\nsource axis-1 end index = {1}, source axis-1 upper bound = {2}" 
                      [|SR.GetString SR.outOfRange; sourceIndex2 + count2; sourceYN|]
              if targetIndex1 + count1 > targetXN then 
                  invalidArgFmt "count1" 
                      "{0}\ntarget axis-0 end index = {1}, target axis-0 upper bound = {2}" 
                      [|SR.GetString SR.outOfRange; targetIndex1 + count1; targetXN|]
              if targetIndex2 + count2 > targetYN then 
                  invalidArgFmt "count2" 
                      "{0}\ntarget axis-1 end index = {1}, target axis-1 upper bound = {2}" 
                      [|SR.GetString SR.outOfRange; targetIndex2 + count2; targetYN|]
  
              for i = 0 to count1 - 1 do
                  for j = 0 to count2 - 1 do
  