anchor.diff:  %%% =============================================================
   %%%
   maybe_serve_file(RestPrefix, Plugins, Req, Path) ->
  -    case doc_root(RestPrefix, Plugins) of
  -        DocRoot when is_list(DocRoot) ->
  -            serve_file(Req, Path, DocRoot);
  -        {multiple_roots, DocRoots} ->
  +    case doc_roots(RestPrefix, Plugins) of
  +        DocRoots when is_list(DocRoots) ->
               serve_file_multiple_roots(Req, Path, DocRoots);
           undefined ->
               menelaus_util:reply_not_found(Req)
       end.
   
  -doc_root(RestPrefix, Plugins) ->
  +doc_roots(RestPrefix, Plugins) ->
       case find_plugin_by_prefix(RestPrefix, Plugins) of
  -        #plugin{doc_root = DocRoot} ->
  -            DocRoot;
  +        #plugin{doc_roots = DocRoots} ->
  +            DocRoots;
           false ->
               undefined
       end.
  
positive.code: head_fragments(Plugins) ->
      [head_fragment(P) || P <- Plugins].
  
  head_fragment(#plugin{name = Service, doc_root = DocRoot}) ->
      File = filename:join(DocRoot, ?HEAD_FRAG_HTML),
      Fragment = get_head_fragment(Service, File, file:read_file(File)),
      create_service_block(Service, Fragment).
  
  get_head_fragment(_Service, _File, {ok, Bin}) ->
      Bin;
  get_head_fragment(Service, File, {error, Reason}) ->
      Msg = lists:flatten(io_lib:format(
                            "Failed to read ~s for service ~p, reason '~p'",
                            [File, Service, Reason])),
      ?log_error(Msg),
      html_comment(Msg).
  
  create_service_block(Service, Bin) ->
      SBin = atom_to_binary(Service, latin1),
      [start_of_fragment(SBin),
       Bin,
       end_of_fragment(SBin)].
  
  start_of_fragment(Service) ->
      html_comment([<<"Beginning of head.frag.html for service ">>, Service]).
  
  end_of_fragment(Service) ->
      html_comment([<<"End of head.frag.html for service ">>, Service]).
  
  html_comment(Content) ->
      [<<"<!-- ">>, Content, <<" -->\n">>].
  
negative.code: %% When run from cluster_run doc-root may be a list of directories.
  %% DocRoot has to be a list in order for mochiweb to be able to guess
  %% the MIME type.
  decode_docroots(Roots) ->
      Prefix = path_config:component_path(?DOCROOTS_DIR),
      decode_docroots(Prefix, Roots).
  
  decode_docroots(Prefix, Roots) when is_list(Roots) ->
      [create_docroot(Prefix, Root) || Root <- Roots];
  decode_docroots(Prefix, Root) ->
      [create_docroot(Prefix, Root)].
  
  create_docroot(Prefix, Root) ->
      filename:join(Prefix, binary_to_list(Root)).
  
  decode_request_headers_filter(undefined) ->
  