anchor.diff:                                  raise <| Bad (getUsage argSpecs usageText)
                            f arg2
                            cursor := !cursor + 2
  -                    | FloatArg f ->
  +                    | Float f ->
                            let arg2 =
                               let arg2 = getSecondArg ()
                               try float arg2
  
positive.code: 
      /// Prints the help for each argument.
      static member Usage (specs, ?usage) =
          let usage = defaultArg usage ""
          System.Console.Error.WriteLine (getUsage (Seq.toList specs) usage)
  
      #if FX_NO_COMMAND_LINE_ARGS
      #else
  
negative.code: /// The spec value describes the action of the argument,
  /// and whether it expects a following parameter.
  type ArgType =
      //
      | Clear of bool ref
      //
      | Float of (float -> unit)
      //
      | Int of (int -> unit)
      //
      | Rest of (string -> unit)
      //
      | Set of bool ref
      //
      | String of (string -> unit)
      //
      | Unit of (unit -> unit)
  
  //
  type ArgInfo = {
      /// The name of the argument.
      Name : string;
      /// The argument type and action of the argument.
      Type : ArgType;
      /// The usage help associated with the argument.
      HelpText : string;
  } with
      /// Create an ArgInfo instance.
      static member Create (name, argType, helpText) =
          { Name = name;
            Type = argType;
            HelpText = helpText; }
    
  //
  exception private Bad of string
  //
  exception private HelpText of string
  
  //
  [<Sealed>]
  type ArgParser () =
      static let getUsage specs (u : string) =
          let sb = System.Text.StringBuilder 100
  
          sb.AppendLine u |> ignore
  
          specs
          |> List.iter (fun (arg : ArgInfo) ->
              let argDisplayType =
                  match arg.Type with
                  | Unit _
                  | Set _
                  | Clear _ ->
                      None
                  | String _ ->
                      Some "<string>"
                  | Int _ ->
                      Some "<int>"
                  | Float _ ->
                      Some "<float>"
                  | Rest _ ->
                      Some "..."
  
              match argDisplayType with
              | None ->
                  Printf.bprintfn sb "\t%s: %s" arg.Name arg.HelpText
              | Some displayType ->
                  Printf.bprintfn sb "\t%s %s: %s" arg.Name displayType arg.HelpText)
  
          // Append the help options.
          sb.AppendLine "\t--help: display this list of options" |> ignore
          sb.AppendLine "\t-help: display this list of options" |> ignore
  
          // Return the usage text.
          sb.ToString ()
  
      /// Parse some of the arguments given by 'argv', starting at the given position
  