anchor.diff:  %% API
   
   -export([rest_url/3,
  -         json_request_hilevel/3]).
  +         json_request_hilevel/3,
  +         json_request_hilevel/4]).
   
   -spec rest_url(string(), string() | integer(), string()) -> string().
   rest_url(Host, Port, Path) when is_integer(Port) ->
  
positive.code: -spec json_request_hilevel(atom(),
                             {string(), string() | integer(), string(), string(), iolist()}
                             | {string(), string() | integer(), string()},
                             undefined | {string(), string()}) ->
                                    %% json response payload
                                    {ok, any()} |
                                    %% json payload of 400
                                    {client_error, term()} |
                                    %% english error message and nested error
                                    {error, rest_error, binary(), {error, term()} | {bad_status, integer(), string()}}.
  json_request_hilevel(Method, {Host, Port, Path, MimeType, Payload} = R, Auth) ->
      RealPayload = binary_to_list(iolist_to_binary(Payload)),
      URL = rest_url(Host, Port, Path),
      RV = rest_request(Method, {URL, [], MimeType, RealPayload}, Auth),
      decode_json_response_ext(RV, Method, setelement(5, R, RealPayload));
  json_request_hilevel(Method, {Host, Port, Path}, Auth) ->
      URL = rest_url(Host, Port, Path),
      RV = rest_request(Method, {URL, []}, Auth),
      decode_json_response_ext(RV, Method, {Host, Port, Path, [], []}).
  
negative.code: rest_add_auth(Request, undefined) ->
      Request.
  
  rest_request(Method, Request, Auth, HTTPOptions) ->
      inets:start(),
      httpc:request(Method, rest_add_auth(Request, Auth), HTTPOptions, []).
  
  decode_json_response_ext({ok, {{_HttpVersion, 200 = _StatusCode, _ReasonPhrase} = _StatusLine,
                                 _Headers, Body} = _Result},
  