anchor.diff:          |> Result.mapError (fun i -> String.Join(", ", i))
           , 0
   
  -    let inline parse case : Parser<'a> =
  -      fun (ss,i,l) ->
  -        if l=0 then Error "requires a parameter", 0
  +    let inline private parseWith tryParseFn case: Parser<'a> =
  +      fun (args, i, l) ->
  +        if l = 0 then Error "requires a parameter", 0
           else
  -          match tryParse ss.[i] with
  +          match tryParseFn args.[i] with
             | Some i -> Ok(case i), l-1
  -          | None -> Error("cannot parse parameter '" + ss.[i] + "'"), l-1
  +          | None -> Error("Cannot parse parameter '" + args.[i] + "'"), l-1
  +
  +
  +    let inline parse case: Parser<'a> = parseWith tryParse case
  +    let inline number case: Parser<'a> = parseWith tryParseNumber case
   
   
     [<ReferenceEquality>]
  
positive.code:       "--summary", "Print out a summary after all tests are finished.", Args.none Summary
        "--version", "Print out version information.", Args.none Version
        "--summary-location", "Print out a summary after all tests are finished including their source code location.", Args.none Summary_Location
        "--fscheck-max-tests", "Set FsCheck maximum number of tests (default: 100).", Args.parse FsCheck_Max_Tests
        "--fscheck-start-size", "Set FsCheck start size (default: 1).", Args.parse FsCheck_Start_Size
        "--fscheck-end-size", "Set FsCheck end size (default: 100 for testing and 10,000 for stress testing).", Args.parse FsCheck_End_Size
        "--my-spirit-is-weak", Args.depricated, Args.none My_Spirit_Is_Weak
        "--allow-duplicate-names", "Allow duplicate test names.", Args.none Allow_Duplicate_Names
        "--colours", "Set the level of colours to use. Can be 0, 8 (default) or 256.", Args.parse Colours
        "--no-spinner", "Disable the spinner progress update.", Args.none No_Spinner
    ]
  
  
negative.code: 
      let parseOptions (options:(string * string * Parser<_>) list) (strings:string[]) =
        let rec updateUnknown unknown last length =
          if length = 0 then unknown
          else updateUnknown (strings.[last]::unknown) (last-1) (length-1)
        let rec collect isHelp unknown args paramCount i =
          if i>=0 then
  