anchor.diff:            Type = argType;
             HelpText = helpText; }
     
  -//
  -exception private Bad of string
  -//
  -exception private HelpText of string
  +/// When thrown, the string will be displayed to the user (usually printed to the console).
  +exception private ShowText of string
   
   //
   [<Sealed>]
   type ArgParser () =
  -    static let getUsage specs (u : string) =
  +    static let getUsage specs (usageText : string) =
           let sb = System.Text.StringBuilder 100
   
  -        sb.AppendLine u |> ignore
  +        sb.AppendLine usageText |> ignore
   
           specs
           |> List.iter (fun (arg : ArgInfo) ->
  
positive.code: 
      /// Parse some of the arguments given by 'argv', starting at the given position
      [<System.Obsolete("This method should not be used directly as it will be removed in a future revision of this library")>]
      static member private ParsePartial (cursor, argv, argSpecs : seq<ArgInfo>, ?other, ?usageText) =
          let other = defaultArg other (fun _ -> ())
          let usageText = defaultArg usageText ""
          let nargs = Array.length argv
          incr cursor
          let argSpecs = Seq.toList argSpecs
          let specs =
              argSpecs
              |> List.map (fun (arg : ArgInfo) ->
                  arg.Name, arg.Type)
  
          while !cursor < nargs do
              let arg = argv.[!cursor]
              let rec findMatchingArg args =
  
negative.code:                             let arg2 = getSecondArg ()
                              try int32 arg2
                              with _ ->
                                  raise <| ShowText (getUsage argSpecs usageText)
                           f arg2
                           cursor := !cursor + 2
                      | Float f ->
  