anchor.diff:      end.
   
   
  +%% @doc Retrieve the data type form an argument specification.
   -spec arg_spec_type(arg_spec()) -> arg_type() | undefined.
  -%% @doc Retrieve the data type form an argument specification.
   arg_spec_type({Type, _DefaultArg}) ->
       Type;
   arg_spec_type(Type) when is_atom(Type) ->
       Type.
   
   
  +%% @doc Convert an argument string to its corresponding data type.
   -spec to_type(atom(), string()) -> arg_value().
  -%% @doc Convert an argument string to its corresponding data type.
   to_type(binary, Arg) ->
       list_to_binary(Arg);
   to_type(atom, Arg) ->
  
positive.code:     end.
  
  
  -spec convert_option_arg(option_spec(), string()) -> option().
  %% @doc Convert the argument passed in the command line to the data type
  %%      indicated by the argument specification.
  convert_option_arg({Name, _Short, _Long, ArgSpec, _Help}, Arg) ->
      try
          {Name, to_type(arg_spec_type(ArgSpec), Arg)}
  
negative.code:     true.
    
  
  %% @doc  Show a message on stdout indicating the command line options and
  %%       arguments that are supported by the program.
  -spec usage([option_spec()], string()) -> ok.
  usage(OptSpecList, ProgramName) ->
      io:format("Usage: ~s~s~n~n~s~n",
                [ProgramName, usage_cmd_line(OptSpecList), usage_options(OptSpecList)]).
  
  
  %% @doc  Show a message on stdout indicating the command line options and
  %%       arguments that are supported by the program. The CmdLineTail argument
  %%       is a string that is added to the end of the usage command line.
  -spec usage([option_spec()], string(), string()) -> ok.
  usage(OptSpecList, ProgramName, CmdLineTail) ->
      io:format("Usage: ~s~s ~s~n~n~s~n",
                [ProgramName, usage_cmd_line(OptSpecList), CmdLineTail, usage_options(OptSpecList)]).
  
  
  %% @doc  Show a message on stdout indicating the command line options and
  %%       arguments that are supported by the program. The CmdLineTail and OptionsTail
  %%       arguments are a string that is added to the end of the usage command line
  %%       and a list of tuples that are added to the end of the options' help lines.
  -spec usage([option_spec()], string(), string(), [{string(), string()}]) -> ok.
  usage(OptSpecList, ProgramName, CmdLineTail, OptionsTail) ->
      UsageOptions = lists:foldl(
                       fun ({Prefix, Help}, Acc) ->
  