anchor.diff:              l
           else
           match l with
  -        | [] -> raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements))
  +        | [] -> 
  +            invalidOpFmt 
  +                "{0}\nThe list was short by {1} {2}" 
  +                [|SR.GetString SR.notEnoughElements; index; (if index=1 then "element" else "elements")|]
           | x :: xs ->
                   let cons2 = freshConsNoTail x
                   setFreshConsTail cons cons2
                   splitAtFreshConsTail cons2 (index - 1) xs
    
       let splitAt index l =
  -        if index < 0 then invalidArg "index" (SR.GetString(SR.inputMustBeNonNegative))            
  +        if index < 0 then invalidArgFmt "index" "{0}\nindex = {1}" [|SR.GetString SR.inputMustBeNonNegative; index|]
           if index = 0 then [], l else
           match l with
  -        | []  -> raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements))
  -        | [_] -> if index = 1 then l, [] else raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements))
  +        | []  -> invalidOp (SR.GetString SR.inputListWasEmpty)
  +        | [_] -> 
  +            if index = 1 then l, [] else 
  +            invalidOpFmt 
  +                "{0}\nThe list was {1} {2} shorter than the index" 
  +                [|SR.GetString SR.notEnoughElements; index-1; (if index=2 then "element" else "elements")|]
  +            
           | x::xs ->
               if index = 1 then [x], xs else
               let cons = freshConsNoTail x
  
positive.code:     let rec takeFreshConsTail cons n l =
          if n = 0 then setFreshConsTail cons [] else
          match l with
          | [] -> raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements))
          | x::xs ->
              let cons2 = freshConsNoTail x
              setFreshConsTail cons cons2
              takeFreshConsTail cons2 (n - 1) xs
   
      let take n l =
          if n < 0 then invalidArg "count" LanguagePrimitives.ErrorStrings.InputMustBeNonNegativeString
          if n = 0 then [] else 
          match l with
          | [] -> raise <| System.InvalidOperationException (SR.GetString(SR.notEnoughElements))
          | x::xs ->
              let cons = freshConsNoTail x
              takeFreshConsTail cons (n - 1) xs
  
negative.code:                 splitIntoToFreshConsTail cons resCons lenDivCount lenModCount i (j + 1) t
  
      let splitInto count (list: _ list) =
          if count <= 0 then invalidArgFmt "count" "{0}\ncount = {1}" [|SR.GetString SR.inputMustBePositive; count|]
          match list.Length with
          | 0 -> []
          | len ->
  