anchor.diff:  %%
   %%   `{error,_}' is operational error. `{exception,_}' is an error reported by
   %%   the called function.
  -%%
  -%% @spec step_dispatch(xmerlrpc_xml:proc_name(), [xmerlrpc_xml:proc_arg()],
  -%%                     [{Key :: atom(), Value :: term()}],
  -%%                     [{binary(), proc_spec()}]) ->
  -%%     {ok, xmerlrpc_xml:xmlrpc_result()}
  -%%   | {exception, Exception :: iolist()}
  -%%   | {error, Reason}
  +
  +-spec step_dispatch(xmerlrpc_xml:proc_name(), [xmerlrpc_xml:proc_arg()],
  +                    call_environment(), dispatch_table()) ->
  +    {ok, xmerlrpc_xml:xmlrpc_result()}
  +  | {exception, Exception :: iolist()}.
  +% | {error, term()}.
   
   step_dispatch(ProcName, ProcArgs, Environment, DispatchTable) ->
     case proplists:lookup(ProcName, DispatchTable) of
  
positive.code: %% `httpd' module API
  -export([do/1]).
  
  %%%---------------------------------------------------------------------------
  
  %% record
  -record(mod, {
    init_data, % this field is not mentioned in doc, but exists in passed record
    data = [],
  
negative.code: %% @doc Validate HTTP request.
  %%   Function validates HTTP part of XML-RPC protocol (method and
  %%   <i>Content-Type</i> header).
  
  -spec step_validate_request(req_method(), [req_header()], req_body(),
                              call_environment(), dispatch_table()) ->
    http_response().
  
  step_validate_request("POST" = _Method, ReqHeaders, ReqBody,
                        Environment, DispatchTable) ->
    case proplists:lookup("content-type", ReqHeaders) of
      {_Key, "text/xml"} ->
       step_parse_xmlrpc_request(ReqBody, Environment, DispatchTable);
      {_Key, OtherContentType} ->
        error_logger:error_report(xmerlrpc, [{step, validate_request}, {error, invalid_content_type}, {content_type, OtherContentType}]),
        http_error(bad_request, ["Invalid content type: ", OtherContentType]);
  