anchor.diff:  	[] -> [];
   	[{K,{D,T}}|Tail] ->
   	    ["**descriptions**\n",
  -	     "<dl><dt>", K, "</dt>\n", "<dd>", descr_text(D),
  +	     "<dl><dt>", K, "</dt>\n", "<dd>", D,
   	     " (<b>type:</b> ", type_to_text(T), ")", "</dd>",
  -	     [["\n<dt>", K1, "</dt>\n", "<dd>", descr_text(D1),
  +	     [["\n<dt>", K1, "</dt>\n", "<dd>", D1,
   	       " (<b>type:</b> ", type_to_text(T1), ")", "</dd>"]
   	      || {K1,{D1,T1}} <- Tail],
   	     "\n</dl>\n\n"]
       end.
  -
  -markdown_extensions(Info) ->
  -    case [{M,E,Arg} || {{M,E},Arg,_} <- Info] of
  -	[] -> [];
  -	[_|_] = Exts ->
  -	    ["**extensions**\n",
  -	     "<dl>\n",
  -	     [["<dt>", M, ":", E, "</dt>", "<dd>", Arg, "</dd>\n"]
  -	      || {M,E,Arg} <- Exts],
  -	     "</dl>\n"]
  -    end.
  -
  -descr_text(D) ->
  -    proplists:get_value(description,D,"").
   
   collect_descriptions({struct, L}, Acc) ->
       lists:foldl(fun collect_descriptions/2, Acc, L);
  
positive.code: collect_descriptions(_, Acc) ->
      Acc.
  
  
  pp_json(Json) ->
      pp_json(Json, 0).
  
  pp_json(void, _) ->
      "\"ok\"";
  pp_json({struct, []}, I) ->
      [i(I), "{}"];
  pp_json({struct, [H|T]}, I) ->
      I1 = I+1,
      ["{", pp_json(H, I1), [[",\n", i(I1), pp_json(Term,I1)] || Term <- T], "}"];
  pp_json({array, []}, _I) ->
      ["[]"];
  pp_json({array, [H|T]}, I) ->
      I1 = I+1,
      ["[", pp_json(H, I1), [[",\n", i(I1), pp_json(Term,I1)] || Term <- T], "]"];
  pp_json(V, _I) when is_binary(V); is_list(V) ->
      io_lib:fwrite("\"~s\"", [V]);
  pp_json(V, _I) when is_integer(V) ->
  
negative.code: markdown([]) ->
      [].
  
  markdown_rpcs([{Not, {notification, Descr, Msg}} | T]) ->
      ["### Notification: ", Not, "\n\n\n", i(0), pp_json(Msg), "\n\n\n",
       case Descr of
  	 "" -> "";
  	 _ ->
  	     [Descr, "\n\n"]
       end,
       markdown_descriptions(Msg), "\n\n" | markdown_rpcs(T)];
  markdown_rpcs([{RPC, {Descr, {request, Req}, {reply, Rep}}} | T]) ->
      ["## ", RPC, "\n\n",
       "### Request\n\n\n", i(0), pp_json(Req), "\n\n\n",
       case Descr of
  	 "" -> "";
  	 _ ->
  	     [Descr, "\n\n"]
       end,
       markdown_descriptions(Req), "\n\n",
       "### Reply\n\n\n", i(0), pp_json(Rep), "\n\n\n",
       markdown_descriptions(Rep), "\n\n" | markdown_rpcs(T)];
  markdown_rpcs([]) ->
      [].
  